之前學習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 型別 物件可以是各種型別的變數,以及...