今天边肖给大家分享一个C语言中的不定数组和初始化方法,有很好的参考价值。希望对你有帮助。来和边肖一起看看吧。
c语言不支持变长数组,无论是malloc还是动态指定其长度。
无法初始化动态数组,但可以使用memset。
1 . int * p=(int *)malloc(num);
2.int num=5;
arr[num];
如果使用arr[],则需要在对齐后初始化以指定长度;否则编译可以通过,但是默认只有一个单元,长度超过一个单元就可能在后面程序的运行中被洗掉。
int arr[]={ 0 };//定义了单元格数组,而不是无限长的数组。
您应该在定义数组之前指定长度,而不是使用arr[]={0}来定义数组。
int arr[256]={ 0 };
int a[256]={ 0 };不是A的所有元素都初始化为0,int A[256]={ 1 };并非的所有元素都初始化为1。
数组可以用一个列值来初始化,例如
int v1[]={1,2,3,4 };
char v2[]={'a ',' b ',' c ',0 };
当定义数组时没有指定数组的大小时,数组的大小由初始化时列表元素的数量决定。因此,v1和v2分别是int[4]和char[4]类型。如果显式指定数组大小,当初始化期间指定的元素数量超过该大小时,将会生成错误。例如:
char v3[2]={'a ',' b ',0 };//错误:初始化值太多
char v3[3]={'a ',' b ',0 };//正确
如果初始化期间指定的元素数小于数组大小,则剩余的元素将被初始化为0。
例如
int v5[8]={1,2,3,4 };
等价于
int v5[8]={1,2,3,4,0,0,0,0 };
注意没有如下形式的数组赋值:
void f()
{
v4={'c ',' d ',0 };//错误:不是数组赋值
}
顾名思义,聚合就是很多东西的聚合。这个定义包括混合类型的集合:像struct和class一样,数组是单一类型的集合。
集合初始化通常冗长且容易出错,但是C中的集合初始化变得方便且安全。当一个集合对象生成后,你要做的就是指定初始值,然后初始化工作就由编译器承担了。这种指定可以有几种不同的方式,取决于正在处理的集合的类型。但是无论哪种情况,指定的初始值都应该用花括号括起来。
比如一个内部类型的数组可以这样定义:
int a[5]={ 1,2,3,4,5 };
如果给定的初始化值大于数组元素的个数,编译器会给出错误信息。但是如果给定的初始化小于数据元素的数量会发生什么呢?
例如:
int b[6]={ 0 };
此时,编译器将第一个初始化值赋给数组的第一个元素,然后将0赋给其余元素。请注意,如果定义数组时没有给出初始值列表,编译器将不会进行初始化。所以上面的表达式是一种将数组初始化为零的简洁方法。
以上C语言变长数组和初始化方法都是边肖分享的内容。希望给大家一个参考,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。