一,数组的概念 数组是一组相同类型元素的集合。
1.数组中存放的是一个或多个数据,但数组元素个数不能为零。
2.数组中存放的多个数据类型是相同的。数组分为一维数组和多维数组。多维数组一般比较多见的是二维数组。
eg:int a=10; char ch='w';(变量)
1,2,3,4,5,6,7,8,9,10---这是一组数据
首先1,2,3,4,5,6,7,8,9,10是多个元素并且他们的类型都是整型int
二,一维数组的创建和初始化
1,数组创建
模板:type(数据类型) arr_name(数组名)[常量值]
存放在数组中的值被称为元素
- 数组的数据类型和变量的数据类型基本上是一样的,可以是char,short,int,float等,也可以是自定义类型
- 那数组名同样的和变量名是一个地位的存在,就是数组的名字,这个名字根据实际情况,起的有意义就行
- 常量值是用来表示你这个数组中有几个元素的,用来指定数组大小
eg:int arr[5]表示该数组由五个整型元素组成,这个数组的名字是arr;
char ch[8]:表示该数组由八个字符型元素组成,这个数组的名字是ch;
2,初始化
有时候数组在创建的时候我们需要给定一些初始值,这种就称为初始化。那数组如何初始化呢?数组的初始化一般使用大括号将数据放在大括号中。我们数组的初始化。
int main()
{
int data[10]={1,2,3,4,5,6,7,8,9,10};//完全初始化
int data2[10]={1,2,3,4,5};//不完全初始化,剩余的元素默认初始化为0
int data3[3]={1,2,3,4};//错误的初始化,初始化的元素个数大于常量值
int data4[5]={1,2,3,4,5};
int data5[]={1,2,3,4,5};//5可以省略掉,就算你不写,他也会根据你初始化的元素来判断常量值, Data5和data4是等效的。
return0;
}
所以,数组如果初始化了,也可以省略掉数组的小制定。编译器会根据数组的初始化内容来确定数组的真实大小。
eg:int arr[]={1,2,3,4,5};的编译结果是1,2,3,4,5;
int arr[5]={1,2,3,4,5};的编译结果是1,2,3,4,5;
int arr[6]={1,2,3,4,5};的编译结果是1,2,3,4,5,0;
三,数组的类型
数组也是有类型的。数组算是一种自定义类型。去掉数组名,留下的就是数组的类型。
int main()
{
//int a;
//char c;
int arr[4];//int[4]
char ch[5];//char[5]
return 0;
}
由此可见,数组的类型不等于元素的类型,数组的类型和元素的类型以及元素的个数有关
四,一维数组的使用
1,数组下标
C语言规定数组是有下标的,下标从零开始。假设数组有n个元素,最后一个元素的下标是n-1,下标就相当于数组元素的编号。
int arr[10]={1,2,3,4,5,6,7,8,9,10};
数组 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
下标的作用就是:比如我们要送外卖,送给1,那我们就需要找他的门牌号,也就是他的下标,为0。
在C语言中,数组的访问提供了一个操作符[],这个操作符叫下标引用操作符。
有的下标访问操作符,我们就可以轻松地访问到数组的元素了。比如我们访问下标为7的元素,我们就可以使用arr[7]。想要访问下标是3的元素,我们就可以使用arr[3],如下代码:
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d\n",arr[7]);//得到的结果是8,因为8的下标是7
printf("%d\n",arr[3]);//得到的结果是4,因为4的下标是3
return 0;
}
2,数组元素的打印
接下来如果想要访问整个数组的内容该怎么办呢?
只要我们产生数组所有元素的下标就可以了,那我们使用for循环产生0到9的下标,接下来使用下标访问就行了,如下代码:
#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\n",arr[i]);
}
return 0;
}
3,数组的输入
int main()
{
int arr[10]={0};//不完全初始化,元素全被初始化为0;
//那我现在想输入十个数
int i=0;
for(i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
借助于循环,一个一个输入,一个一个读出。