变长数组概念详细介绍

其实对我而言,不对vs用户而言这个概念可能没有多大用处,但我还想与各位分享一下,可能大家没有听说这个概念,那我们就开始吧!

首先,我们都知道数组方括号内只可以是常量,而不能是变量,否则我们的编译会显示错误信息,要求括号里必须是常量;或许会有人想那我在前面用整型int 定义一个n在用arr[n],但很遗憾的告诉你,这样编译也是无法通过的4fd9fe91cdda4aef91fbd5fe5fd8476e.png

因为虽然我们给n变量进行初始化,但他仍然是个变量,不符合c语言中数组的语法规定。

然后会有人这样想,我用#define  定义呢?

很显然这样是可以的,因为当我们用#define定义N时,类似于替换,即后面我们代码中使用的所有用到N的地方都被替换成我们定义的常数,也就是我们所说得常量,所以当我们使用整形定义arr[N]时不会出现编译错误的情况:194f91110ddf4d7c8213be5b78785e44.png

最后我们讨论一下变长数组,不知道各位朋友的老师会不会讲,身为大一新生的我表示,我们老师不会讲😅 变长数组字面意思,就是当我们定义数组arr 时,可以先对变量n定义及初始化int n 然后我们在定义数组int arr[n]这个时候他便不会报错,有朋友可能会质疑了(博主,你骗人的吧,上面第一个我们才讲arr[]数组不能使用变量,你现在又说可以,那到底是可以还是不可以呢?)其实这两者是有区别的,回到上面第一个概念,我们细节的发现我们对arr数组进行了复制操作,而在变长数组里,我们是没有进行复制操作的,也可以理解为数组大小是变量控制的,我们就不能对其进行初始化,effcbf6b3a83464783e72685e3c34a20.png这样,我们编译是可以通过的,但我相信各位朋友可能遇到了和我一样的问题,但也不用质疑我,什么问题呢?73a800c75e5d4f86a81e13184b50adad.png

编译还是无法通过,(难道博主欺骗我们) 其实不是这样的,我们现在包括我使用的是vs版本的编译器,就算不是vs其他的也都是高级的编译器,这种写法已经淘汰了,但我们怎样去验证这个结论的正确性呢,我们需要使用c99版本的编译器,那个编译器上这个代码就可以得到很好地实现,当然,我写这个的目的也是拓展一下大家的视野

😄或许以后大家在交流时有人提到变长数组你还可以和别人有些话题而不至于一脸蒙😅

好啦!又到了说再见的时候啦,拜拜咯,家人们😊😊

db6adf233119426c8cc348368d05a126.png 

 

 

 

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值