不是不能初始化,是初始化的不对。另外,数组最好用memset初始化。
(1)在定义数组时对数组元素赋以初值。如:
static int a[10]={0,1,2,3,4,5,6,7,8,9};
经过上面的定义和初始化后,a[0]=0,a[1]=1,… ,a[9]=9。
(2)初始化时可以只对一部分元素赋初值。例如:
static int a[10]={0,1,2,3,4};
定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。
扩展资料
数组的三种初始化方式
1、静态初始化
除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。例 int[] a={1,2,3};//静态初始化基本类型数组
Man[] mans={new Man(1,1),new Man(2,2)};//静态初始化引用类型数组
2、动态初始化
数组定义与为数组元素分配空间并赋值的 *** 作分开进行。int[] a1=new int[2];//动态初始化元素,先分配空间。
a1[0]=1;//给数组元素赋值
a1[2]=2;
3、数组的默认初始化
数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
实例:int a2[]=new int[2];//默认值0,0
boolean[] b=new boolean[2];//默认值 false,false
String[] s=new String[2];//默认值null
你的SqList结构包含的元素是一个100个int类型的数组,和一个int变量。
在初始化函数中,首先参数sqlist L,应该改成Sqlist L
然后你给L->Elem_array进行赋值 *** 作是不对的,因为Elem_array是数组首地址,是个常量,不能进行赋值 *** 作。而且本身结构里面定义的是数组元素,所以已经有空间了,根本不需要再另外申请内存。如果需要动态申请内存,就把Elem_array声明为指针类型:ElemType pElem_array
以上就是关于在C语言编程中,定义一个数组时要不要初始化全部的内容,包括:在C语言编程中,定义一个数组时要不要初始化、C语言数据结构顺序表初始化程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)