关于sizeof的题目遇到了很多次,直到今天我才决定把我做过的题目在电脑上运行一下,真是不看不知道,一看吓一跳,原来已经做错了两次这样的题目了。(事不过三)
先看题目:在32位系统下的C/C++程序,请计算sizeof的值。
void *p = malloc(100);
sizeof(p) = ?
已经做了两次这样的题目,都是想直接写个100。(错,错,错)
还是实践出真知,看代码吧。
</pre><pre name="code" class="cpp">#include<stdio.h>
#include<stdlib.h>
int main(void) {
char str[] = "hello";
char *p = str;
int n = 10;
int a[5];
char *ptr = (char*)malloc(100);
printf("sizeof(str)=%d\n",sizeof(str));
printf("sizeof(p)=%d\n",sizeof(p));
printf("sizeof(n)=%d\n",sizeof(n));
printf("sizeof(a)=%d\n",sizeof(a));
printf("sizeof(ptr)=%d\n",sizeof(ptr));
return 0;
}
结果是:
sizeof(str)=6
sizeof(p)=4
sizeof(n)=4
sizeof(a)=20
sizeof(ptr)=4