首页 > 编程知识 正文

c语言定义常量数组,c语言定义字符串变量

时间:2023-05-05 02:09:54 阅读:14313 作者:420

疑问: c语言数组的长度可以用变量指定吗?

回答:可以在支持C99的编译器下完成。

一、背景概述C89/C90: C89即ANSI C,ANSI :美国国家标准学会(americannatinalstandardsinstitute ) C90即ISO C,ISO :国际标准化组织)国际标准化组织C99: 1994年,ANSI/ISO联合委员会开始修订c标准1999年,1994年的c语言修订引出了ISO 9899:1999的发表,它通常是C99 C11: 2011年,国际标准化组织(ISO )和国际电工委员会) IEC

三.在C99可变长度阵列(VLA ) C99标准中添加了可变长度阵列(variable-LengthArray ) VLA )。 在C11中,VLA是可选的,不是语言所需的特性。

使用C99之前的数组:

使用C99可变长度数组:

思考:在C99之前,数组的大小必须是常量或常量表达式,sizeof (被视为整形常量。 )结果,在源代码中明确了数组的长度。 C99的VLA通过变量指定数组的长度,但只能在程序运行时确定变量的数值。 因此,可变长度数组的大小必须在运行到定义数组长度的变量之后才能确定可变长度数组的长度。 实际上,数组的内存分配是在程序运行C99和C99时分配的。 所以,在给数组分配实际内存之前,确定数组的长度就可以了。 数组的长度是在编译时确定,还是在程序运行期间为数组分配内存之前确定,对数组没有影响。 结合3,我们知道可变长度数组(VLA )其实也是静态数组。 也就是说,在为数组分配内存之前确定长度,在分配内存之后不改变该数组的长度。 由于VLA的特点,如果源代码无法确定数组的长度,需要在程序中执行后再确定数组的长度,然后不再需要调整数组的大小(没有空间浪费,也没有空间不足),则使用VLA比使用动态数组更好总结可变长度数组的限制:

必须是自动变量。 也就是说,不能用static、extern关键字修饰的情况下,需要声明后在另一行进行赋值操作,不能使用定义符号法。 即,在宣言时直接初始化。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。