我在正确显示数组大小时遇到问题。 我知道数组大小是256000但是当我进入循环时它显示为8。如果不使用动态分配,将准确显示大小。如何使用动态分配来纠正错误?
答案 0 :(得分: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总是在编译时确定。