黑马程序员技术交流社区

标题: 在C中能否使用可变长度的数组? [打印本页]

作者: 张立鹏    时间: 2016-3-23 22:14
标题: 在C中能否使用可变长度的数组?
这样确定可以吗?
  1. void test(){
  2.     int n;
  3.     scanf("%d",&n);
  4.     int array[n];
  5.     for (int i = 0; i<n; i++) {
  6.         array[i]=i+1;
  7.         printf("array[%d] = %d\n",i,array[i]);
  8.     }
复制代码



作者: 爱尘iPhone    时间: 2016-3-23 23:09
完全可以
作者: 大彬周    时间: 2016-3-23 23:57
好好学习!!加油
作者: 332439409    时间: 2016-3-24 00:20
可以啊....有什么不可以
作者: 菜逼    时间: 2016-3-24 00:41
严格来说,是不可以的.
这是C99标准的额外支持.

你叫一个专业学习C语言的人来看,对来他来说绝对是毁三观的
作者: zxinsunshine    时间: 2016-3-26 22:41
可以,声明时可以让变量作为数组长度,但初始化时不能用变量作为数组长度了
作者: 最爱舒儿    时间: 2016-3-27 00:16
当你输入n的时候这个数组的长度就确定了                                       
作者: darcy_yj    时间: 2016-3-27 01:38
批量初始化的时候不可以.
作者: 堕落天使    时间: 2016-3-27 08:12
准确的说, 你这不是长度可变的数组,只能说是根据用户输入的数值定义相应长度的数据,长度可变的数组应该是先定义一个长度固定的数组,然后对数组的长度做增加和减少的操作,C语言最后的《通讯录》案例会用到可变数组,但是可变数组要牵扯到链表,但是视频中并没有介绍链表,而是用了另一种方式代实现,你看到C语言最后一天的视频就会知道了!
作者: 张立鹏    时间: 2016-3-27 22:17
最爱舒儿 发表于 2016-3-27 00:16
当你输入n的时候这个数组的长度就确定了

可是在谭浩强的书中他说这样是不允许的
作者: 张立鹏    时间: 2016-3-27 22:22
堕落天使 发表于 2016-3-27 08:12
准确的说, 你这不是长度可变的数组,只能说是根据用户输入的数值定义相应长度的数据,长度可变的数组应该 ...

也就是说数组长度并不一定是固定的?
作者: 堕落天使    时间: 2016-3-28 17:47
张立鹏 发表于 2016-3-27 22:17
可是在谭浩强的书中他说这样是不允许的

这是xcode做的优化,用变量定义数组的长度,其他编译器可能就不能用了
作者: 张立鹏    时间: 2016-3-28 21:17
堕落天使 发表于 2016-3-28 17:47
这是xcode做的优化,用变量定义数组的长度,其他编译器可能就不能用了

哦哦,这样啊,那在一般开发中会有规定不许这样做么




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