【发布时间】:2021-07-04 14:45:56
【问题描述】:
首先,我是编程新手,不知道“可变大小数组”和“动态数组”是什么意思。 我只是用这些词来描述我的情况。随意使用正确的命名法进行编辑。 现在问题是,我有以下代码:-
...
int n;
printf("Enter number of rows/columns = ");
scanf(" %d",n);
int a[n][n];
...
和
...
int n;
n=6;
int a[n][n];
...
n=7;
...
n=4;
...
两者都编译成功。
- 在第一种情况下,在执行
scanf()函数后程序崩溃。 - 第二种情况完美。
为什么?
【问题讨论】:
-
需要把变量的地址传给scanf:
scanf(" %d", &n); -
当你定义一个数组时,它会在定义时获取维度。如果您稍后更改
n的值,IT 真的不在乎。n是一个不相关的变量,而不是在任何时间点设置数组大小的幻数。 -
I am new to programming and don't know what "variable-sized array" and "dynamic array" mean- 这就是书本的用途。 -
只有书籍才能帮助你
标签: arrays c scanf declaration variable-length-array