【发布时间】:2014-11-17 19:10:24
【问题描述】:
在编写程序时,我要求用户输入数字 N,我必须使用它来为 int 数组分配内存,处理此问题的正确方法是什么:
第一种方法:
int main() {
int array[],n;
scanf("%d\n",&n);
array = malloc(n * sizeof(int));
}
或第二种方法:
int main() {
int n;
scanf("%d\n",&n);
int array[n];
}
【问题讨论】:
-
我的 C 标准知识似乎生疏了,这些尝试都编译了吗?
-
两者都不能从命令行获取,但是第一个是非法的,因为缺少数组大小。
-
这个例子可能过于简单了。考虑到可移植性,我是否应该总是在使用
scanf()从用户那里获取 N 之前分配一些固定 N 的数组? -
不在 main 中,使用 c99,您可以在堆栈上分配它,并且大多数编译器会在 ansi c 中执行它,除非您处于迂腐模式......仍然使用 malloc 总是可以的。在函数中执行此操作并期望它在返回时出现,这太诱人了。