为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们,为什么上面那种方式可以定义,下面不可以

http://img1.sycdn.imooc.com//5e8d3f610001edef01990107.jpg这种可以定义

http://img1.sycdn.imooc.com//5e8d3f700001152301900106.jpg这种定义失败

正在回答

3 回答

数组长度是固定的,上面那种A是常量,不会变了,它就是10,相当于abc[10]。下面的A是变量,虽然给它赋值了,变量是会变的(好多情况,即使之后你没赋值,甚至没动它,但是它就是会变),肯定不允许出现这种情况的。

0 回复 有任何疑惑可以回复我~

下面那个定义是变量。在 C89 中,必须使用常量表达式指明数组长度;也就是说,数组长度中不能包含变量,不管该变量有没有初始化。而在 C99 中,可以使用变量指明数组长度。

下面的代码使用变量指明数组长度,在 GCC 和 Xcode 下能够编译通过,而在 VC 和 VS(包括 VC 6.0、VS2010、VS2013、VS2015、VS2017 等)下都会报错:

int m = 10, n;

scanf("%d", &n);

int a[m], b[n];

你可以把下面的放到Xcode下试试,能不能通过。


1 回复 有任何疑惑可以回复我~

上面是符号常量,下面是整型常量,也许问题出在这儿?我也不太懂。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

大佬们,为什么上面那种方式可以定义,下面不可以

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信