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

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