为什么sizeof对双指针和双数组的行为有所不同?

时间:2014-11-10 21:07:36

标签: c++ pointers

我写了一段代码,其片段如下所示。我不明白为什么它不会为指针变量p打印800。

double *p = new double [100];
double q[10];
printf("Sizeof(p) = %d\n", sizeof(p)); // prints 4
printf("Sizeof(q) = %d\n", sizeof(q)); // prints 80

我理解为什么它为q打印80(8字节/双* 10),但为什么不打印800?一个相关的问题是,编译器在遇到p的删除时如何知道释放多少空间?

delete [] p;

1 个答案:

答案 0 :(得分:2)

因为实际指针地址存储在4个字节中。如果你想要p指向的大小,你会说:

sizeof(*p);