我在正确显示数组大小时遇到问题。我知道数组大小是 256000,但是当我进入循环时它显示为 8。如果不使用动态分配,大小将准确显示。如何使用动态分配纠正错误?
问问题
150 次
1 回答
4
这会给你 10 的大小,因为编译器知道它是一个数组;
char foo[10];
int size = sizeof foo;
这将在 32 位架构上为您提供大小 4,因为它是指针的大小。
char *foo = malloc(10 * sizeof(char));
int size = sizeof foo;
在此之后,用法foo
相同。您可以对这两个版本执行或任何foo[2]
操作。*foo
但是您可能不应该&foo
使用第一个变体的地址。有时你应该free(foo);
使用第二个。
永远记住:sizeof 不是一个函数,sizeof 总是在编译时决定的。
于 2013-09-18T06:40:33.893 回答