sizeof詳解
- sizeof是不是關鍵字
- sizeof是運算符(操作符)嗎
- sizeof的運用
sizeof是不是關鍵字
sizeof是關鍵字,這一點毋庸置疑。你不能将sizeof定義為任何辨別符。檢視C語言标準文檔裡的說明:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcsQXYtJ3bm9CXldWYtlWPzNXZj9mcw1ycz9WL49zdaVnQuxEeJR1TycmaNd3Zq5EdVpmT6FEVNVTRq1EeZpWT5FkaOhXQq1EdRpmTxUERPNDOp10dZRVT3lkeMBTWU5EenpnT2NmMiNnSywEd5ITW110MaZHetlVdO1GTxUERNlXTYplbGdlYwlTeMZTTINGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
sizeof是運算符(操作符)嗎
答案是:YES
C語言中,sizeof是運算符(操作符),而且是唯一一個以單詞形式出現的運算符,它用來計算存放某一個量需要占用多少位元組,它的結合性是從右到左。檢視C語言标準文檔裡的說明:
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