为什么这不一样:char dog [1000];和char * dog =(char *)malloc(1000 * sizeof(char));

时间:2012-05-02 00:26:00

标签: c

当我“打印”(狗)的大小

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

THX

2 个答案:

答案 0 :(得分:4)

第一个变量的类型为char[1000],这是一个包含1000个字符的数组。

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

答案 1 :(得分:1)

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

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