开发者学堂课程【你的第一门 C 语言课:数组】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/444/detail/5467
数组
内容介绍:
一、数组的定义
二、 访问数组元素
三、 循环跟数组的关系
四、 数组的初始化
一、数组的定义
- 类型 数组名[元素个数
int a[6];
char b[24];
double c[3];]
注意:数组不能动态定义
- 上边几个类型,都占用了多少字节的内存?
二、 访问数组元素
- 数组名[下标]
a[0];
//访问a数组中的第一个元素
b[1];
//访问b数组中的第二个元素
c[5]
;//访问c数组中的第六个元素
- 注意:
nt a[5] ;
//创建一个具有五个元素的数组
a[0];
//访问第一个元素的下标是0,不是1
a[5];
//报错,因为第五个元素的下标是 a [4]
三、循环跟数组的关系
- 这是因为我们常常需要使用循环来访问数组:
int a[10];
for (i =0; i<10;i++)
{
a[i]= i;
}
- 案例
举个例子,我们尝试用数组存放班里10位同学的数学成绩,并计算出平均数。
#include
#define NUM 10
int main( )
{
int s [NUM] ;
int i,sum=0;
for(i=0;i<10;i++)
{
printf("请输入第%i位同学的成绩:”,i+1);
scanf("%d",&s[i]) ;
sum +=s[i] ;
}
//
浮点型
printf("成绩录入完毕,该次考试的平均分是:%.2f\n", (double)sum / NUM ;|
return 0 ;
}
运行:
gcc test1.c && ./a. out
结果:
请输入第1位同学的成绩:80
请输入第2位同学的成绩:90
请输入第3位同学的成绩: 70
请输入第4位同学的成绩: 66
请输入第5位同学的成绩:77
请输入第6位同学的成绩: 54
请输入第7位同学的成绩:67
请输入第8位同学的成绩:89
请输入第9位同学的成绩:65
请输入第10位同学的成绩: 99
成绩录入完毕,该次考试的平均分是:75.70
四、数组的初始化
- 将数组中所有元素初始化为0,可以这么写:
int a[10] = {0}; //事实上这里只是将第一个元素赋值为0
- l 如果是赋予不同的值,那么用逗号分隔开即可:
int a[10]={1,2,3,4,5,6,7,8,9,0};
- l 你还可以只给一部分元素赋值,未被赋值的元素自动初始化为0:
int a[10]={1,2,3,4,5,6};
//表示为前边6个元素赋值,后边4个元素系统自动初始化为0
- l 举例1:
#include
int main()
{
int a[10]={0}
int i;
for (i = 0; i < 10;i++)
{
printf(
“
%d\n
”
, a[1])
}
return 0;
}
运行:gcc test2.c && ./a. out
结果:
0
0
0
0
0
0
0
0
- 举例2:
#include
int main()
{
int a[10];
int i;
for (i = 0; i < 10;i++)
{
printf(
“
%d\n
”
, a[1])
}
return 0;
}
运行:
gcc test2.c && ./a. out
结果:
134518360
1075976712
134513721
8810972
134513196
8821984
8818676
134513696
134513424
134513707
l
举例3:
#include
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0}
int i;
for (i = 0; i < 10;i++)
{
printf(
“
%d\n
”
, a[1])
}
return 0;
}
运行:gcc test1.c && ./a. out
结果:
1
2
3
4
5
6
7
8
9
1
0
- 举例4:
#include
int main()
{
int a[10]={1,2,3,4,5}
int i;
for (i = 0; i < 10;i++)
{
printf(
“
%d\n
”
, a[1])
}
return 0;
}
运行:gcc test1.c && ./a. out
结果:
1
2
3
4
5
0
0
0
0
0
- 有时候还可以偷懒,可以只给出各个元素的值,而不指定数组的长度(因为编译
器会根据值的个数自动判断数组的长度):
int a[] = {1,2,3,4,5,6,7,8,9,0};
- 举例1:
#include
int main()
{
int a[]={1,2,3,4,5}
int i;
for (i = 0; i < 10;i++)
{
printf(
“
%d\n
”
, a[1])
}
return 0;
}
运行:gcc test2.c && ./a. out
结果:
1
2
3
4
5
5
13451375
0
-1079398472
10218806
- l 举例2:
#include
int main()
{
int a[10]={[3]=3,[5]=5.[8]=8};
int i;
for (i = 0; i < 10;i++)
{
printf(
“
%d\n
”
, a[1])
}
return 0;
}
运行:gcc test2.c && ./a. out
结果:
0
0
0
3
0
5
0
0
8
0
- 举例3:
#include
int main()
{
int a[10]={[3]=3,[5]=5.[8]=8};
int i;
for (i = 0; i < 10;i++)
{
printf(
“
%d\n
”
, a[1])
}
printf(
“
%d\n
”
,sizeof(a));
return 0;
}
运行:gcc test2.c && ./a. out
结果:
0
0
0
3
0
5
0
0
8
0
40
- C99增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定
元素进行初始化赋值,而未被赋值的元素自动初始化为0:
int a[10] = {[3] = 3,[5]=5,[8] = [8]};