C/C++ 關鍵字sizeof

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章