我不理解以下程序中的数组声明:
int main(){
int n;
printf("How many numbers?");
scanf(" %d",&n);
int array['n'];
for(int i = 0; i < n; i++)
{
scanf(" %d",&array[i]);
}
for(int i = 0; i < n; i++)
{
printf(" %d\n",*(array +i));
}
getch();
return 0;
}
答案 0 :(得分:1)
将int array['n']
替换为int array[n]
,并确保使用C编译器编译代码,它可以正常工作。具有非常数大小的自动分配数组称为VLA,并在14年前的C99中引入。
答案 1 :(得分:0)
好吧,''语法意味着用它的ascii值替换。所以
int array['n'];
实际上是:
int array[110];
(ascii中的'n'= 110)
只要n&lt; 110这将有效,但我怀疑编码器的意图是什么!
这可能是int array[n];
的意图。缺少malloc
意味着数组是在堆栈上创建的,而不是堆。 (进一步阅读:memory managment in c)。
int array['n'];
编译的原因int array[n];
不是因为数组大小需要是constatns。 'n'是常数(110)而n不是。
答案 2 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
// working in Dev-C++
int main() {
int a,i;
printf("enter size\n");
scanf("%d",&a);
int arr[a];
for(i=0;i<a;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<a;i++)
{
printf("%d",arr[i]);
}
return 0;
}