A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© woaidd99 中级黑马   /  2015-5-29 23:31  /  1987 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 woaidd99 于 2015-5-31 21:26 编辑

比如说  int n = 6
             int a[n] 这种情况  为什么可以啊
             下面还有个情况:
             int n  = 0,;
             scanf("%d", &n);
             int a[n];
           这两个数组的的定义  情况类似吗   
           好像说数组的长度不能是变量吧
            上次打错了  这次改了下,第二种情况允许吗
              

18 个回复

倒序浏览
int n = 6              int a[n] 这种情况不是说可以,只是说现在的情况只有Xcode支持可以使用,不会报错但是会警告.深层原理是数组在编译链接阶段会开始分配存储空间,而变量在运行后才会赋值.没有值就不确定要给数组分配的存储空间大小.所以编译器不支持
回复 使用道具 举报
七尺阳光 发表于 2015-5-30 00:01
int n = 6              int a[n] 这种情况不是说可以,只是说现在的情况只有Xcode支持可以使用,不会报错但 ...

那第二种情况呢
回复 使用道具 举报
第二种会直接报错的.变量a  未定义 是不能拿来使用的.你想用变量来代替数组长度的话.建议使用宏定义
#define  n   5  定义在main函数外. 然后n 就可以直接拿来使用了.想修改值的话,直接把5修改成其他数值就可以了
回复 使用道具 举报
学习了!
回复 使用道具 举报
数组大小必须定义
不能用变量
回复 使用道具 举报
doushu 中级黑马 2015-5-31 21:07:21
7#
顶顶顶顶
回复 使用道具 举报
七尺阳光 发表于 2015-5-30 22:10
第二种会直接报错的.变量a  未定义 是不能拿来使用的.你想用变量来代替数组长度的话.建议使用宏定义
#defin ...

比如说  int n = 6
             int a[n] 这种情况  为什么可以啊
             下面还有个情况:
             int n  = 0,;
             scanf("%d", &n);
             int a[n];
           这两个数组的的定义  情况类似吗   
           好像说数组的长度不能是变量吧
回复 使用道具 举报
七尺阳光 发表于 2015-5-30 22:10
第二种会直接报错的.变量a  未定义 是不能拿来使用的.你想用变量来代替数组长度的话.建议使用宏定义
#defin ...

厉害{:3_51:}
回复 使用道具 举报
第一个属于确定了变量的值,第二个定义是想要依据你想要的储存空间的大小来分配空间,数组[]必须是常量或者常量表达式,不可以是动态的定义。
但是在被调用函数中存在第二种时又是合法的,因为被调用的函数只是临时分配储存空间,当执行结束后,就释放储存空间
回复 使用道具 举报
你说的太好啦,点个赞!
回复 使用道具 举报
taolove 发表于 2015-6-1 20:18
第一个属于确定了变量的值,第二个定义是想要依据你想要的储存空间的大小来分配空间,数组[]必须是常量或者 ...

应该是这样!
回复 使用道具 举报

给点分就好了,嘿嘿
回复 使用道具 举报
哦,学习了...
回复 使用道具 举报
第一种老师说是xcode做的优化,其它的不知道了
回复 使用道具 举报
这个其实是不可以的,只是xcode 做了优化才可以,在其他的编译器里是不对的!
回复 使用道具 举报
woaidd99 发表于 2015-5-31 21:26
比如说  int n = 6
             int a[n] 这种情况  为什么可以啊
             下面还有个情况:

第一种情况属于编译器已经知道你的n是6了。
如果你一定要这么做 可以试一下malloc函数
在标题头 #include <stdlib.h>
好像是这个
回复 使用道具 举报
数组元素个数未知的话可以声明动态数组
回复 使用道具 举报
数组定义时可以是变量,但如果用变量的话则不能同时进行初始化即赋值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马