C語言sizeof 函式

2021-10-04 02:27:49 字數 2171 閱讀 6123

用來查詢型別或物件在記憶體中所佔的位元組數。

unsign int(無符號整型)

sizeof(type_name); //sizeof(型別/object)

sizeof object; //物件

舉例:

int i =0;

sizeof

(int);

//ok

sizeof

int;

//error

sizeof

(i);

//ok

sizeof i;

//ok

首先宣告,sizeof()返回值除了和型別有關,還與編譯器有關。結果有可能不同。

以我們經常用到的舉例

sizeof

(char);

//return 1

sizeof

(int);

//return 4

sizeof

(double);

//return 8

在計算物件所佔型別大小時,相當於計算物件的型別的大小(陣列除外);

int i =1;

sizeof i;

//i的型別是int,所以等價於sizeof(int)

sizeof0;

//0的型別是int,所以也等價於sizeof(int)

也可以寫成sizeof(object); 和不帶括號的等價。

這裡的object包括很多,例如:常量、變數、函式呼叫、陣列、指標、結構體等。

sizeof

'a';

//char型別,return 1

sizeof1;

//int型別,return 4

sizeof

1.0;

//double型別,return 8

sizeof

"abcd"

//字串型別,return 5

//sizeof()和strlen()在對字串做運算時是有區別的

//sizeof(字串)計算結尾的'\0';

//而strlen(字串)不計算算結尾的'\0'

//即二者相差1

int

fun(

)void

main()

輸出:4

//我的編譯器是64位

sizeof

(char*)

;//return 8

sizeof

(int*)

;//return 8

sizeof

(double*)

;//return 8

#include

void

main()

;char a2[10]

=;char a3=

"hello"

;//字元陣列,末尾預設有'\0'

printf

("%d\n"

,sizeof

(a1));

printf

("%d\n"

,sizeof

(a2));

printf

("%d"

,sizeof

(a3));

}輸出:110

6

要想求陣列的大小,有常見的兩種方法:

int a[5]

=;sizeof

(a)/

sizeof

(int);

//總長度/單個元素的長度

sizeof

(a)/

sizeof

(a[0])

;//總長度/第乙個元素的長度

sizeof

(fun)

;//error

void

fun2()

sizeof

(fun2()

);//error

struct s

;sizeof

(s.f1)

;//error

參考文獻:

1.

C語言 sizeof函式詳解

sizeof,乙個其貌不揚的傢伙,引無數菜鳥竟折腰,小蝦我當初也沒少犯迷糊,秉著 辛苦我乙個,幸福千萬人 的偉大思想,我決定將其盡可能詳細的總結一下。但當我總結的時候才發現,這個問題既可以簡單,又可以複雜,所以本文有的地方並不 適合初學者,甚至都沒有必要大作文章。但如果你想 知其然,更知其所以然 的...

C語言之 sizeof 和strlen 函式

sizeof 既是乙個關鍵字,還是乙個運算子。而不是乙個函式。sizeof的作用週期是編譯階段。sizeof的作用是用來返回 裡面物件占用的記憶體位元組數。其計算物件型別可以為 資料型別 變數 函式 陣列 指標等 ref strlen是乙個c庫函式 string.h 用來返回乙個字串的長度 注意,字...

C語言詳解sizeof

一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...