sizeof用來求出所佔的字節數
sizeof是個關鍵字,不是函數,sizeof是在編譯期間求值。
(1)基本類型和類的大小
cout<<sizeof(char)<<" "<<sizeof(int)<<" "<<sizeof(string)<<" "<<sizeof(vector<int>);
1 4 32 20
類的大小都是固定的,和對象無關,具體怎麼算沒仔細研究,好像是隻和成員變量和虛函數表有關。
(2)數組的大小是數組所佔內存的總大小,指針的大小是系統的大小
代碼:
int a[]={0,1,2,3,4,5};
int *p=a;
cout<<sizeof(a)<<" "<<sizeof(p);
輸出:
24 4
PS:
我們用64的win10操作系統的時候,指針應該是8個字節,但是編譯器往往選擇編譯成32位的程序,所以這指針還是4個字節。
(3)數組和指針作爲參數傳遞時,都是傳遞指針
代碼:
int getSize(int x[])
{
return sizeof(x);
}
int getSize2(int* p)
{
return sizeof(p);
}
int main()
{
int a[]={0,1,2,3,4,5};
int *p=a;
cout<<getSize(a)<<" "<<getSize(p)<<" "<<getSize2(a)<<" "<<getSize2(p);
return 0;
}
輸出:
4 4 4 4
(4)char數組表示的字符串
代碼:
char s1[]="abcdef";
char s2[]="";
cout<<sizeof(s1)<<" "<<sizeof(s2);
輸出:
7 1