C语言定义未知长度的数组

我在编写归并排序算法时遇到了这个问题。为什么不能用
scanf("%d",&n);
int a[n+1];
如果用malloc函数,请解释一下指针在数组里的用法

首先确认你的编译器是否支持C99的vla特性,如果支持,那么直接用上面的代码就可以了

如果不支持只好使用malloc的动态内存分配来实现

scanf("%d",&n);
int *a=(int *)malloc(sizeof(int)*n+1);
a[0]=xxx;
...
a[n]=xxx;

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-07-12
等到用户输入的行数列数以后,用malloc分配内存,得到指针就行了.
相似回答