一、数组的概念
1.数组中存放的是一个或多个数据,但是数组元素个数不能为零。
2.数组中存放的多个数据类型是相同的。
二、一维数组的使用
1.数组的下标
C语言中规定数组下标是由0开始的,假设数组有n个元素,则最后一个元素的下标是n-1,下标就相当于数组元素的编号。
#include"stdio.h"
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d\n",arr[7]);//8
printf("%d\n",arr[3]);//4
return o;
】
2.数组元素的打印
要用for循环产生数组的下标,从而打印出数组
#include"stdio.h"
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i=0;
for(i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return 0;
}
3.数组的输入
#include"stdio.h"
int main()
{
int arr[10];
int i=0;
printf("请输入10个数");
for(i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return 0;
}
4.一维数组在内存中的存储
依次打印数组元素的地址:
#include"stdio.h"
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i=0;
for(i=0;i<10;i++)
{
printf("&arr[i]=%p\n",i,&arr[i]);
}
return 0;
}
由这个得出数组的地址是由小到大变化的,并且发现每两个相邻的元素之间相差4。
5.用sizeof计算元素个数
sizeof是C语言中的一个关键字,是可以计算类型或者变量大小。
#include"stdio.h"
int main()
{
int arr[10]={0};
printf("%d\n",sizeof(arr));
return 0;
}
这里输出的结果是40,计算的是数组所占内存空间的总大小,单位是字节。
#include"stdio.h"
int main()
{
int arr[10]={0};
printf("%d\n",sizeof(arr[0]));//计算一个元素的大小,单位是字节。
return 0;
}
接下来就能计算出数组的元素个数:
#include"stdio.h"
int main()
{
int arr[10]={0};
int sz=sizeof(arr)/sizeof(arr[0]);
printf("%d\n",sz);
return 0;
}
这里的结果为10,表示有10个元素。
三、二维数组的创建
type arr_name[常量值1][常量值2]
例:int arr[3][5];
- 3表示数组有3行
- 5表示每一行有5个元素
- int表示数组的每个元素是整型类型
- arr是数组名,可以根据自己的需要指定名字
四、二维数组的初始化
1.不完全初始化
int arr1[3][5]={1,2};
int arr2[3][5]={0};
arr1
1 | 2 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
arr2
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
2.完全初始化
int arr3[3][5]={1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
arr3
1 | 2 | 3 | 4 | 5 |
2 | 3 | 4 | 5 | 6 |
3 | 4 | 5 | 6 | 7 |
3.按照行初始化
int arr4[3][5]={{1,2},{3,4},{5,6}};
1 | 2 | 0 | 0 | 0 |
3 | 4 | 0 | 0 | 0 |
5 | 6 | 0 | 0 | 0 |
4.初始化时可以省略行,但是不能省略列!!!
五、二维数组的使用
1.二维数组的下标
C语言规定,二维数组的行是由0开始的,列也是从0开始的
0 | 1 | 2 | |
---|---|---|---|
0 | 1 | 2 | 3 |
1 | 2 | 3 | 4 |
2 | 3 | 4 | 5 |
2.二维数组的输出和输入
#include"stdio.h"
int main()
{
int arr[3][5];
int i=0;
//输入
for(i=0;i<3;i++)//产生行号
{
int j=0;
for(j=0;j<5;j++);//产生列号
{
scanf("%d",&arr[i][j]);//输入数据
}
}
//输出
for(i=0;i<3;i++);//产生行号
{
int j=0;
for(j=0;j<5;j++);//产生列号
{
printf("%d",arr[i][j]);//输出数据
}
printf("/n");//换行
}
return 0;
}