所以这是我的代码:
cout << "The size of an integer is " << sizeof(int) << endl;
cout << "The size of a double is " << sizeof(double) << endl;
cout << "The size of a string is " << sizeof(string) << endl;
int num = 1234;
cout << "The size of a num is " << sizeof(num) << endl;
int *pnum = #
cout << "The size of a pointer pnum is " << sizeof(pnum) << endl;
cout << "The size of a value pointed at by pnum is " << sizeof(*pnum) << endl;
return 0;
我对这段代码很困惑,因为它的输出是:
The size of an integer is 4
The size of a double is 8
The size of a string is 40
The size of a num is 4
The size of a pointer pnum is 8
The size of a value pointed at by pnum is 4
我认为指针pnum的大小应该与pnum指向的值相同,因为我正在观看教程“Programming C ++”,在本教程中它们是相同的。有人可以解释为什么他们在我的程序中不一样吗?
答案 0 :(得分:2)
sizeof(pnum)
与sizeof(int*)
完全相同,表示指向int值的指针所需的字节数。这样的指针在64位系统中占用64位,如代码输出所示,为8字节。
与此同时,sizeof(*pnum)
与sizeof(int)
完全相同,因为*pnum
的类型为int
。这种类型通常是32位长,它给我们4个字节。
答案 1 :(得分:1)
在本教程中它们是相同的:
原因可能是那台特定的机器(比如我自己的32位机器)sizeof(int)= sizeof(int *)= 4.
你得到不同结果的原因是*pnum
是pnum
的指针,它是一个int(你的机器上有4个字节)而pnum
本身就是一个指针(8个字节以上)你的机器)