为什么以下程序会挂起并突然关闭,即使它编译没有错误?我怀疑这与我使用变量作为整数数组的索引这一事实有关program1
。我希望用户提示输入数组的大小,并据此填充该数组。虽然我可以直观地确定问题的原因这里是变量索引,但我想知道以下原因:1-9
arr[]
如果程序出错,为什么程序编译时没有错误或警告?
代码错误的技术原因是什么?我们不能使用变量作为数组索引吗?有没有办法或者malloc()
是唯一的解决方案?
//Program1
#include<stdio.h>
int main()
{
int n,arr[n],i;
printf("Enter the size of n");
scanf("%d",&n);
for(i=0;i<n;i++)
arr[i]=i;
for(i=0;i<n;i++)
printf("%d\n",arr[i]);
}
我已经实现了相同的使用malloc()
inprogram2
并且程序运行良好。但是我想知道上述程序program1
失败的原因,而不是malloc()
仅仅因为它太方便而盲目使用。
//Program2
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,*ptr,i;
printf("Enter the size of array\n");
scanf("%d",&n);
ptr=malloc(sizeof(int)*n);
for(i=0;i<n;i++)
ptr[i]=i;
for(i=0;i<n;i++)
printf("%d\n",ptr[i]);
free(ptr);
}