我写了一段代码,其片段如下所示。我不明白为什么它不会为指针变量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;
答案 0 :(得分:2)
因为实际指针地址存储在4个字节中。如果你想要p
指向的大小,你会说:
sizeof(*p);