其实对我而言,不对vs用户而言这个概念可能没有多大用处,但我还想与各位分享一下,可能大家没有听说这个概念,那我们就开始吧!
首先,我们都知道数组方括号内只可以是常量,而不能是变量,否则我们的编译会显示错误信息,要求括号里必须是常量;或许会有人想那我在前面用整型int 定义一个n在用arr[n],但很遗憾的告诉你,这样编译也是无法通过的
因为虽然我们给n变量进行初始化,但他仍然是个变量,不符合c语言中数组的语法规定。
然后会有人这样想,我用#define 定义呢?
很显然这样是可以的,因为当我们用#define定义N时,类似于替换,即后面我们代码中使用的所有用到N的地方都被替换成我们定义的常数,也就是我们所说得常量,所以当我们使用整形定义arr[N]时不会出现编译错误的情况:
最后我们讨论一下变长数组,不知道各位朋友的老师会不会讲,身为大一新生的我表示,我们老师不会讲😅 变长数组字面意思,就是当我们定义数组arr 时,可以先对变量n定义及初始化int n 然后我们在定义数组int arr[n]这个时候他便不会报错,有朋友可能会质疑了(博主,你骗人的吧,上面第一个我们才讲arr[]数组不能使用变量,你现在又说可以,那到底是可以还是不可以呢?)其实这两者是有区别的,回到上面第一个概念,我们细节的发现我们对arr数组进行了复制操作,而在变长数组里,我们是没有进行复制操作的,也可以理解为数组大小是变量控制的,我们就不能对其进行初始化,这样,我们编译是可以通过的,但我相信各位朋友可能遇到了和我一样的问题,但也不用质疑我,什么问题呢?
编译还是无法通过,(难道博主欺骗我们) 其实不是这样的,我们现在包括我使用的是vs版本的编译器,就算不是vs其他的也都是高级的编译器,这种写法已经淘汰了,但我们怎样去验证这个结论的正确性呢,我们需要使用c99版本的编译器,那个编译器上这个代码就可以得到很好地实现,当然,我写这个的目的也是拓展一下大家的视野
😄或许以后大家在交流时有人提到变长数组你还可以和别人有些话题而不至于一脸蒙😅
好啦!又到了说再见的时候啦,拜拜咯,家人们😊😊