一维数组
数组创建
type arr_name[常量值];
int arr[10];
char ch[10];
type:数组中存放数据的类型
arr_name:数组的名字
[常量值]:常量值用来指数组的大小 ,根据实际情况来指定大小
数组的类型:去掉数组名留下的就是数组的类型
数组初始化
数组在创建时,需要给定一些初始值放在数组中,这就叫数组的初始化。
完全初始化
int arr1[10]={1,2,3,4,5,6,7,8,9,10};
常量值与后面的数组元素个数是完全对应的,叫完全初始化。
不完全初始化
int arr2[10]={1,2,3};
常量值与后面的数组元素个数不是完全对应的,落空的元素默认初始化为0.
错误的初始化
int arr3[5]={1,2,3,4,5,6};
赋给数组的值太多,会发生溢出,报错。
数组下标
下标就相当于数组元素的编号,如 arr[0]~arr[n-1]。
数组的下标是从0开始的,假设数组中有n个元素,最后一个下标是n-1;
int arr1[10]={1,2,3,4,5,6,7,8,9,10};
下标 0 1 2 3 4 5 6 7 8 9
数组的输入与输出
int main()
{
int arr[10]={0};//不完全初始化
int i=0;
for(i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return 0;
}
计算数组个数
int main()
{
int arr[10]={0};
int sz= sizeof(arr)/sizeof(arr[0]);
printf("%d\n",sz);//10
return 0;
}
二维数组
数组创建
type arr_name[常量值1][常量值2];
int arr[10][5];
第一个常量值表示有几行,如arr[10][5]中有10行。
第二个常量值表示有几列 ,如arr[10][5]中有5列。
二维数组的创建与一维数组相似。
数组初始化
二位数组的初始化跟一维数组初始化一样,也是用大括号初始化
int arr1[2][4]={1,2,3,4,5,6,7,8};//完全初始化
int arr2[2][4]={1,2,3,4,};//不完全初始化
也可以按照行来初始化
int arr3[2][4]={1,2,3,4}{5,6,7,8};
初始化时可以省略行,但是不可以省略列
int arr4[][4]={1,2,3,4,5,6};
数组下标
二维数组是有行和列的,在使用下标时行是从0开始的,列也是从0开始的。
一个数组有n行m列,那么数组范围:arr[0][0]~arr[m-1]。
int arr5[3][4]={1,2,3,4,5,6,7,8,1,2,3,4};
0 | 1 | 2 | 3 | |
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | 8 |
2 | 1 | 2 | 3 | 4 |
arr[2][1]=1;
二维数组的输入与输出
int main()
{
int arr[3][4] = {0};
int i = 0;
for(i=0; i<3; i++)
{
int j = 0;
for(j=0; j<4; j++)
{
scanf("%d", &arr[i][j]);
}
}
for(i=0; i<3; i++)
{
int j = 0;
for(j=0; j<4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
变长数组
在C99标准之前,C语言在创建数组的时候,数组的大小只能使用常量、常量表达式来表达,或者我们初始化数组时,可以省略数组大小,但是这种数组创建不够灵活。
C99中给一个变长数组的新特性,允许我们可以使用变量指定数组的大小,在运行时可以根据变量的大小来指定数组的元素个数。
变长数组的长度只有运行时才能确定,所以变长数组不能初始化。
但是,变长数组不是说数组的大小是可变的,数组的大小一旦确定就不能再变化了
一维变长数组的输入与输出
int main()
{
int n = 0;
scanf("%d", &n);
int arr[n];//变长数组不能初始化
int i = 0;
for(i = 0 ; i < n ;i++)
{
scanf("%d",&arr[i]);
}
for(i = 0 ; i < n ; i++)
{
printf("%d", arr[i]);
}
return 0;
}
以上内容,如果有任何问题,请留言或私信我。期待与大家沟通交流。