int
a[10]={1,2,3,4,5,6,7,8,9,10}
.一般初始化,例:
int
a[10]={3,10,5,3,4,5,6,7,8,9};
int
array[5]={2,3,4,5,6};
其结果是给每一个数组元素都指定了初值。
2.部分元素初始化,其余元素均为零。
例:
int
a[10]={7,8,9,67,54};
仅给前5个元素赋初值,后5个元素初值为0。
3.全部元素均初始化为1。
int
a[10]
=
{1,1,1,1,1,1,1,1,1,1}
不允许简写为 int
a[10]={1}或int
b[10]={1*10}
同学们想一想上述定义a和b数组后,初始化结果是什么?
注意:当程序不给数组指定初始值时,编译器作如下处理:
(1)部分元素初始化,编译器自动为没有初始化的元素初始化为0。
(2)数值数组如果只定义不初始化,编译器不为数组自动指定初始值,即初值为一些随机值(值不确定)。
4.如果全部元素均指定初值,定义中可省略元素的个数。
例:
int
a[5]={9,28,3,4,5}可以写为:
int
a[
]={9,28,3,4,5}
数组元素的引用
c语言规定,不能整体引用数值数组,只能逐个引用数组元素;
元素引用方式:数组名[下标表达式]
例:a[0]
=
a[5]
+
a[7]
-
a[2*3]
“下标表达式”可以是任何非负整型数据。
特别强调:1.一个数组元素,实质上就是一个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。
2.在c语言中,数组作为一个整体,不能参加数据运算,只能对单个的元素进行处理。
main(){int a[10]int b=3
for(i=0i<10i++)
a[i]=0//空转 理论上在开头应该写a[10]={0} 即可
j=3//赋值但应该在开头定义j的类型,否则会报错
a[j]=b
printf("%d",a[j])}
结果估计是 0 要么就出错 这段程序有问题
正确答案是C。A错误,因为f只是一个float型的变量,并不是数组。
B错误,因为数组元素个数为6,而定义的数组a只是a[0]-a[4],会越界。
D错误,因为初始化错误。不在定义数组时初始化,只能每一个元素进行初始化,比如d[0]=1和d[1]=2。d[5]={1,2,3,4,5}这种方式错误了。
希望能帮助到你。