参考:五大板块(1)—— 数组的定义,赋值与应用
作者:丶PURSUING
发布时间: 2021-03-18 16:00:05
网址:https://blog.csdn.net/weixin_44742824/article/details/114981166
数组的定义及访问
完全初始化,部分初始化,不初始化
#include <stdio.h>
#include <string.h>
int main()
{
int i;
//不初始化
int array1[10];
//完全初始化
int array2[5]={1,2,3,4,5};
//部分初始化
int array3[5]={0};
for(i=0;i<10;i++){
printf("%d ",array1[i]);
}
putchar('\n');
for(i=0;i<5;i++){
printf("%d ",array2[i]);
}
putchar('\n');
for(i=0;i<5;i++){
printf("%d ",array3[i]);
}
putchar('\n');
return 0;
}
运行结果:
可以看到不初始化的时候值是随机分配的,不建议采用这种方式。
1996072264 1 0 1995852616 67032 66992 0 66376 0 0
1 2 3 4 5
0 0 0 0 0
应该采用部分初始化,初始化第一个元素,其他元素的值默认为0
注意:
数组只有在定义的时候[ ]
表示个数,其他时候都是下标。
数组的下标是从0开始
,即数组的第一个元素是a[0]
。
数组的最后一个元素是a[i-1]
关于数组赋值,还需要注意:
Ⅰ、大多情况下,数组在定义时必须确定大小
例如类似下面的情景,数组定义时大小是不确定的,妄图通过后续改变的num进行动态赋值,这样的操作往往出现段错误。
#include <stdio.h>
int main()
{
int num;
int i;
int array[num];
printf("需要录入的学生人数?\n");
scanf("%d",&num);
//int array[num];
for(i=0;i<num;i++){
printf("请输入第%d个学生的成绩\n",i+1);
scanf("%d",&array[i]);
}
printf("这些学生的成绩是:");
for(i=0;i<num;i++){
printf("%d ",array[i]);
}
return 0;
}
结果:
Segmentation fault
是因为只有数组在定义的时候确定了大小,程序才能根据这个大小分配一段连续的内存空间给数组存放数据。
下面为探索过程-----------------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)