sizeof() 運算符在C語言中使用時,它決定表達式的大小或在char大小的存儲單元數(shù)量中指定的數(shù)據(jù)類型。sizeof() 運算符包含一個操作數(shù),該操作數(shù)可以是表達式,也可以是數(shù)據(jù)類型轉換,其中轉換是用括號括起來的數(shù)據(jù)類型。數(shù)據(jù)類型不僅可以是基本數(shù)據(jù)類型(如整數(shù)或浮動數(shù)據(jù)類型),還可以是指針數(shù)據(jù)類型和復合數(shù)據(jù)類型(如聯(lián)合和結構)。
程序要知道原始數(shù)據(jù)類型的存儲大小。盡管數(shù)據(jù)類型的存儲大小是恒定的,但在不同的平臺上實現(xiàn)時它會有所不同。例如,我們可以使用sizeof()運算符動態(tài)分配數(shù)組空間:
int *ptr=malloc(10*sizeof(int));
在上面的示例中,我們使用了sizeof()運算符,該運算符應用于int類型的轉換。我們使用malloc()函數(shù)分配內存,并返回指向該已分配內存的指針。內存空間等于int數(shù)據(jù)類型占用的字節(jié)數(shù)并乘以10。
注意:輸出在不同的機器上可能會有所不同,例如在32位操作系統(tǒng)上將顯示不同的輸出,在64位操作系統(tǒng)上將顯示相同數(shù)據(jù)類型的不同輸出。
sizeof()運算符的行為根據(jù)操作數(shù)的類型而有所不同。
操作數(shù)可以是一種數(shù)據(jù)類型
操作數(shù)可以是一個表達式
#include <stdio.h> int main() { int x=89; //變量聲明 printf("變量x的大小是 %d", sizeof(x)); //顯示x變量的大小 printf("\ninteger數(shù)據(jù)類型的大小為 %d",sizeof(int)); //顯示整數(shù)數(shù)據(jù)類型的大小。 printf("\n字符數(shù)據(jù)類型的大小為 %d",sizeof(char)); //顯示字符數(shù)據(jù)類型的大小 printf("\n浮動數(shù)據(jù)類型的大小為 %d",sizeof(float)); //顯示浮動數(shù)據(jù)類型的大小。 return 0; }
在上面的代碼中,我們借助sizeof()運算符來打印不同數(shù)據(jù)類型(如int,char,float )的大小。
輸出結果
變量x的大小是 4 integer數(shù)據(jù)類型的大小為 4 字符數(shù)據(jù)類型的大小為 1 浮動數(shù)據(jù)類型的大小為 4
#include <stdio.h> int main() { double i=78.0; //變量初始化。 float j=6.78; //變量初始化。 printf("(i+j) 表達式的大小為 : %d",sizeof(i+j)); //顯示表達式的大小(i + j)。 return 0; }
在上面的代碼中,我們分別創(chuàng)建了兩個類型為double和float的變量'i'和'j',然后使用sizeof(i + j)運算符打印表達式的大小。
輸出結果
(i+j) 表達式的大小為 : 8