运行此程序时,输出为4个字节。 (我使用的是64位编译器)
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *b;
b=(int*)malloc(10*sizeof(int));
printf("%d",sizeof(b));
return 0;
}
但我不应该输出40个字节,因为我为'b'动态分配40个字节的空间?
答案 0 :(得分:0)
没有;它应与printf("%zu", sizeof(int *));
相同,无论您为b
指定的值是什么,在您的实施中都是b
,因为int *
的类型为int [10]
,而不是{{1} }}