目录
1. 数组的概念
数组:数组就是一组相同元素的集合。
数组可以分为一维数组,二维数组,多维数组等。
数组可以存放多个或一个元素,但是数组元素个数不能为0;
2. ⼀维数组的创建和初始化
2.1一维数组的创建
int arr[4];//表示数组arr存放了4个int类型的数据
arr
为数组名,int [4]
是数组类型,4表示元素个数,元素个数需要用[]方括号括起来。
2.2一维数组的初始化
int arr1[5] = {1 ,2,3,4,5} ; //完全初始化
char arr2[3] = {0};//不完全初始化
2.3数组下标
数组下标是从0开始的,也就是说,int arr1[0]代表arr数组下标为0的元素,也是数组arr的第一个元素。
3. ⼀维数组的使用
3.1一维数组的输入
一维数组的输入可以采用循环的方式。
例如:
char arr[5] = { 0};
int i =0 ;
for(i = 0; i < 5 ;i++)//有几个元素,循环几次
{
scanf("%c",&arr[ i ]);
}
3.2一维数组的输出
char arr[5] = { 0};
int i =0 ;
for(i = 0; i < 5 ;i++)//有几个元素,循环几次
{
printf("%d ",arr[i]);
}
4. ⼀维数组在内存中的存储
一维数组在内存中是连续存放的,默认是由低地址到高地址。
例如·:
int arr[4] = {1,2,3,4};
在内存中的存储方式如图:
int main()
{
int arr[4] = { 1,2,3,4};
int i = 0;
for(i = 0;i < 4;i++)
{
printf("%p\n",&arr[i]);
}
return 0;
}
注意:这里的地址是16进制的
5. sizeof计算数组元素个数
sizeof操作符是可以用来计算数组元素的个数
int arr[5] = {1,2,3,4,5);
int sz = sizeof(arr) / sizeof(arr[0]);
sizeof(arr)
计算的是arr数组的大小,单位是字节,sizeof(arr[0])
计算的是一个数组元素的大小,因此,sizeof(arr) / sizeof(arr[0]);
可以计算出元素个数。
6. ⼆维数组的创建
二维数组的创建跟二维数组有相似之处
例如:
type arr_name[常量值1][常量值2];
例如:
int arr[2][3];
char arr1[4][5];
type代表的是数组类型。
arr_name代表的是二维数组的名字。
常量值1代表的是数组有多少行。
常量值2代表的是数组每行有多少个元素。
7. ⼆维数组的初始化
二维数组的初始化与一维数组也有相似之处,二维数组的行下标是从0开始的,列下标也是从0开始的
例如:
int arr1[2][3] = {1,2,3,4,5,6};//完全初始化
char arr2[3][4] = { 1,2};//不完全初始化
为了更的观察,二维数组的初始化也可以在大括号里使用大括号,代表每一行的元素。
例如:
int arr1[3][2] = {{1,2},{3,4},{5,6}};//完全初始化
int arr2[3][4] = {{1,2},{3,4},{5,6}};//不完全初始化
{1,2}表示第一行有两个元素1,2;{3,4}表示第二行有两个元素3,4;{5,6}表示第三行有两个元素。
在内存中的存储方式如图:
完全初始化
不完全初始化,没有进行初始化的,默认值是0
注意:二维数组中行可以省略,但是列不可以省略。
例如:
int arr[ ][ 5 ] = {1,2,3,4,5,6,7,8};
8. ⼆维数组的使用
8.1二维数组的输入
char arr[3][4] = { 0 };
int i = 0;
int j = 0;
fo r(i = 0; i< 3;i++)//代表第几行
{
for( j = 0; j < 4;j++)代表每一行的元素
{
scanf("%c",&arr[i][j]);
}
}
8.2二维数组的输出
char arr[3][4] = { 0 };
int i = 0;
int j = 0;
fo r(i = 0; i< 3;i++)//代表第几行
{
for( j = 0; j < 4;j++)代表每一行的元素
{
printf(”%d ",arr[i][j]);
}
}
9. ⼆维数组在内存中的存储
二维数组在内存中是连续存放的,地址是由低地址到高地址
char arr[3][4] = { 0 };
int i = 0;
int j = 0;
for(i = 0; i< 3;i++)//代表第几行
{
for( j = 0; j < 4;j++)代表每一行的元素
{
printf("%p \n",&arr[i][j]);
}
}
10. C99中的变⻓数组
type arr_name[常量值]
中的常量值可以是变量,但是数组大小一旦确定,就无法改变。
例如:
int n = 0;
scanf("%d",&n);
int arr[n] = { 0 };