天天看點

sizeof詳解sizeof是不是關鍵字sizeof是運算符(操作符)嗎sizeof的運用

sizeof詳解

  • sizeof是不是關鍵字
  • sizeof是運算符(操作符)嗎
  • sizeof的運用

sizeof是不是關鍵字

sizeof是關鍵字,這一點毋庸置疑。你不能将sizeof定義為任何辨別符。檢視C語言标準文檔裡的說明:

sizeof詳解sizeof是不是關鍵字sizeof是運算符(操作符)嗎sizeof的運用

sizeof是運算符(操作符)嗎

答案是:YES

C語言中,sizeof是運算符(操作符),而且是唯一一個以單詞形式出現的運算符,它用來計算存放某一個量需要占用多少位元組,它的結合性是從右到左。檢視C語言标準文檔裡的說明:

sizeof詳解sizeof是不是關鍵字sizeof是運算符(操作符)嗎sizeof的運用

sizeof的運用

我們一般用sizeof的場合為:

大家發現沒有,sizeof是要帶括号的。

是以,一些蒟蒻就會跳出來說:

sizeof是函數

其實不然,我們看看下面這個例子。

#include<cstdio>
using namespace std;
int main()
{
	int i = 0;
	printf("%d %d %d\n",sizeof(int),sizeof(i),sizeof i);
	return 0;
}
           

輸出:

4 4 4
           

我們可以看出

sizeof i

竟然可以編譯并運作通過,函數調用必定帶括号的,由此看來,sizeof其實是關鍵字。

我們再來看一段程式

short *sp = NULL;

printf("%d %d\n",sizeof(sp),sizeof(*sp));

int *ip = NULL;

printf("%d %d\n",sizeof(ip),sizeof(*ip));

輸出:

4 2
4 4
           

明顯帶上*就是計算指針指向的 值的類型大小,而指針無論是何類型,都是4個位元組

還有一個例子:

#include<cstdio>
using namespace std;
void fun(int b[100])
{
	printf("%d\n", sizeof(b));
}
int main()
{
	int b[100];
	fun(b);
	return 0;
}
           

輸出:

4
           

PS:這裡涉及到數組名在函數中退化的問題,即在函數中作為形參是,退化為一個指針,故求出來的大小為4

繼續閱讀