1

当我“打印” sizeof(dog) 时

char dog[1000];// i get size of 1000
char *dog = (char*)malloc(1000 * sizeof(char));// i get size of 8 ? why?

谢谢

4

2 回答 2

4

第一个变量的类型char[1000]是 1000 个字符的数组。

第二个变量的类型char *是指针。在您的系统上,指针的大小似乎为 8(可能是因为您有 64 位指针)。

于 2012-05-02T00:28:25.997 回答
1

因为char *dog只是一个指针,而char dog[1000]一个字符数组。

需要注意的重要一点是,sizeof dog[1000]确定在编译时是已知的,而动态数组 ( char *dog) 是未知的。

于 2012-05-02T00:32:51.233 回答