伪数组和数组的区别 C语言为什么不建议把变量作为数组长度?
浏览量:2556
时间:2021-03-10 20:05:15
作者:admin
C语言为什么不建议把变量作为数组长度?
数组的大小不能用变量表示,因为在编译连接过程中,应该根据您设置的长度为数组分配内存。如果它是一个变量,就没有办法分配它。您可以使用符号常量来求解它。首先,使用:#define M 100
#define N 100,然后在程序中定义u[M[N]二维数组。如果它不一定是100,它可以是任何正整数。
在C语言中,所有变量空间在程序操作开始时应用于系统,包括和指针。除了malloc函数等一些动态应用方法外,它还需要空间。任何应用程序空间系统都不允许读写。如果数组大小是变量定义,则在程序运行之前无法确定数组大小,并且无法应用它,因此不允许使用它。解决方案如上所述,例如:
int a[n
可以更改为
int*const a=(int*)malloc(sizeof(int)*n)
,这样变量就可以直接用作数组,包括[1]。因为“[]”中的圆括号运算符只会偏移其中的地址数并获取值。例如,
a[1
相当于
*(a 1)
,星号后的常量修饰符表示指针声明后不能更改,即只能指向获取的空间,这完全符合数组的性质。
015]更多答案(9)
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。