黑马程序员技术交流社区

标题: 关于二维数组从键盘接收行号和列号的问题 [打印本页]

作者: 木冉    时间: 2015-11-16 13:05
标题: 关于二维数组从键盘接收行号和列号的问题
今天学到二维数组,有一个练习是定义一个二维数组a[m][n],其中m和n用scanf函数从键盘接收,练习时发现在c中变量必须定义在函数的开头,也就是说
  1. scanf("%d,%d",&m,&n);
复制代码
不能放在int a[m][n];之前,那请问此题何解?

作者: 仰望星空的猪    时间: 2015-11-18 19:08
C语言 数组的长度必须是已知的常量或者常量表达式。在编译的过程中就需要知道数组的长度。变量是在运行的时候才会赋值。所以不可以接收用户输入的值。不知道这么说对不对?
作者: cube川    时间: 2015-11-18 19:56
const int m=0;
const int n=0;
这样写试试
作者: 木冉    时间: 2015-11-19 11:37
仰望星空的猪 发表于 2015-11-18 19:08
C语言 数组的长度必须是已知的常量或者常量表达式。在编译的过程中就需要知道数组的长度。变量是在运行的时 ...

但是如果在定义这个数组之前就从键盘接收到了m和n的值,这个值不就是确定了的吗?
作者: 木冉    时间: 2015-11-19 11:45
cube川 发表于 2015-11-18 19:56
const int m=0;
const int n=0;
这样写试试

试了,也不可以T^T
作者: 仰望星空的猪    时间: 2015-11-19 13:51
木冉 发表于 2015-11-19 11:37
但是如果在定义这个数组之前就从键盘接收到了m和n的值,这个值不就是确定了的吗? ...

代码-编译-链接-执行。  从键盘接收数据那是在  执行  的时候。数组定义的长度是在   编译   这个环节就需要明确给出的。
作者: 木冉    时间: 2015-11-20 10:34
仰望星空的猪 发表于 2015-11-19 13:51
代码-编译-链接-执行。  从键盘接收数据那是在  执行  的时候。数组定义的长度是在   编译   这个环节就 ...

soga,也就是说在c++编译器里是不可以这么操作的,xcode却可以T_T




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2