C中sizeof的用法

2021-07-01 19:11:56 字數 1705 閱讀 9560

之前學習c語言,對於其中的很多細節問題都沒有了解的很清楚,都囫圇吞棗的過去了,每次看到各個公司出的筆試面試題的時候,才發現自己的c語言基礎中漏洞百出,今天就其中的乙個漏洞——sizeof好好的彌補一下,如有不當,敬請指出。

sizeof,計算資料空間的大小,它不是函式,而是一種單目運算子。sizeof,主要用於計算當前分配給資料空間的大小,與其他因素無關,下面我們通過具體的例子進行詳細的了解。

1. sizeof用於資料型別,使用方法sizeof(type)

sizeof(char)          = 1;

sizeof(unsigned char) = 1;

sizeof(signed char) = 1;

sizeof(short int)      = 2;

sizeof(unsigned short) = 2;

sizeof(int) = 4;

sizeof(unsigned int) = 4;

sizeof(long int) = 4;

sizeof(unsigned long) = 4;

sizeof(float) = 4;

sizeof(double) = 8;

2. sizeof用於變數,使用方法sizeof(val) or sizeof val

char c[5]; 		sizeof (c) = 5;

int num[5]; sizeof (num) = 20;

char str = "c++"; sizeof (str) = 4;

可以看出,對於變數而言,sizeof計算的是實際分配的大小,即所需要的空間大小,與賦值與否沒有關係,而對於第三個例子,結果是4,是因為str的最後是'\0'結尾的,'\0'被省略,但是占用乙個位元組,因此是4;

3. sizeof用於指標

char st = "hello";

char *p = st;

sizeof(p) = 4;

int n = ;

int *p = n;

sizeof(p) = 4;

對於指標的長度,通常跟所指向的變數無關,而是指標自身的長度,而指標的長度通常跟位址暫存器的位數相關,因此對於32位編譯器的環境,sizeof (*p) = 4,而64位編譯器的環境,sizeof(*p) = 8;

之前有乙個問題一直困擾著我,也就是函式引數的長度大小,如圖所示:

輸出的結果是4,剛開始不明白,然後就除錯了一下,發現

在函式引數傳遞過程中,傳遞的為指標變數,因此sizeof (str)實際為指標的長度,因此為4。

關於sizeof先寫下這麼多,後續如果再遇到sizeof的問題時,再進行詳細的學習,sizeof在公司的筆試面試題中出現的機率還是挺大的,相信掌握好sizeof的細節,對於面試筆試都會有很大的幫助。



c 中sizeof的用法

1 作用 sizeof計算資料 包括陣列 變數 型別 結構體等 所佔記憶體空間,用位元組數表示。2 sizeof有三種用法形式,sizeof操作符,對變數或物件可以不加括號,但若是型別,須加括號 如下 1 sizeof object 物件 2 sizeof type name 型別 3 sizeof...

C中sizeof的用法

sizeof用法總結 1 在c語言中,sizeof 是乙個判斷資料型別或者表示式長度的運算子,對 sizeof 的處理都是在編譯階段進行。2 基本資料型別的sizeof 這裡的基本資料型別指short int long float double這樣的簡單內建資料型別,由於它們都是和系統相關的,所以在...

C 中sizeof的用法

sizeof是乙個操作符 operator 其作用是返回乙個物件或型別所佔的記憶體位元組數。sizeof有三種語法形式 sizeof object sizeof 物件 sizeof object sizeof 物件 sizeof type name sizeof 型別 物件可以是各種型別的變數,以及...