C語言中sizeof函式的基本使用總結

2022-10-04 00:18:19 字數 1903 閱讀 2059

前言

c語言中的sizeof是乙個很有意思的關鍵字,經常有人用不對,搞不清不是什麼。我以前也有用錯的時候,現在寫一寫,也算是提醒一下自己吧。

sizeof是什麼

sizeof是c語言的一種單目操作符,如c語言的其他操作符++、--等,sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。這個運算元不好理解對吧?後面慢慢看就明白了。sizeof的返回值是size_t,在64位機器下,被定義為long unsigned int。

sizeof函式的結果:

1.變數:變數所佔的位元組數。

int i = 0;

printf("%d\n", sizeof(i)); //4

2.陣列:陣列所佔的位元組數。

int arr_int1 = ;

int arr_int2[10] = ;

printf("size_arr1=%d\n",sizeof(arr_int1)); //5*4=20

printf("size_arr2=%d\n",sizeof(arr_int2)); //10*4=40

3.字串:其實就是加了'\0'的字元陣列。結果為字串字元長度+1。

char str = "str";

printf(ezskx"size_str=%d\n",sizeof(str)); //3+1=4

4.指標:固定長度:4(32位位址環境)。

特殊說明:陣列作為函式的入口引數時,在函式中對陣列sizeof,獲得的結果固定為4:因為傳入的引數是乙個指標。

int get_size程式設計客棧(int arr)

int main() ;

printf("size_fun_arr=%d\n",get_size(arr_int)); //4

}5.結構體

1.只含變數的結構體:

結果是最寬變數所佔位元組數的整數倍:[4 1 x x x ]

typedef struct test test_t;

printf("size_test=%d\n", sizeof(test_t)); //8

幾個寬度較小的變數可以填充在乙個寬度範圍內:[4 2 1 1]

typedef struct test test_t;

printf("size_test=%d\n", sizeof(test_t)); //8

位址對齊:結構體成員的偏移量必須是其自身寬度的整數倍:[4 1 x 2 1 x x x]

typedef struct test test_t;

printf("size_test=%d\n", sizeof(test_t)); //12

2.含陣列的結構體:包含整個陣列的寬度。陣列寬度上文已詳述。[4*10 2 1 1]

typedef struct test test_t;

printf("size_test=%d\n", sizeof(test_t)); //44

3.巢狀結構體的結構體

包含整個內部程式設計客棧結構體的寬度(即整個展開的內部結構體):[4 4 4]

typedef struct son son_t;

typedef struct father father_t;

printf("size_struct=%d\n",sizeof(father_t)); //12

位址對齊:被展開的內部結構體的 首個成員的偏移量 ,必須是被展開的 內部結構體中最寬變數 所佔位元組的整數倍:[2 x x 2 x x 4 4 4]

typedef struct son son_t;

typedef struct father father_t;

printf("size_struct=%d\n",sizeof(father_t)); //20

總結本文標題: c語言中sizeof函式的基本使用總結

本文位址:

c語言中的sizeof

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

C語言中的sizeof

一 sizeof是編譯器的內建指示符 不是函式 sizeof用於計算型別或變數所佔的記憶體大小 sizeof的值在編譯期就已經確定 sizeof用於型別 sizeof type sizeof用於變數 sizeof var 或 sizeof var int var 0 printf d n sizeo...

c語言中的sizeof

首先,sizeof是c語言的一種單目操作符,以位元組的形式給出了其運算元的儲存大小,其返回值為size t,在64位機器下被定義為long unsigned int。sizeof測的大小,在不同的機器上可能不一樣,sizeof不能傳函式。1.基本資料型別 include include intmai...