目录
一.数组的概念
数组是一组相同类型元素的集合:
数组元素个数不能为0;
数组中的多个数据类型相同。
数组分为一维数组和多维数组。
二.一维数组
1.一维数组的创建和初始化
数组创建的基本语法
type arr_name[常量名]
type 指定的是数组的类型:char、int、自定义类型等
arr_name 表示数组名的名字
//举例
int arr[6];
char brr[8];
short math[70];
初始化举例
//数组的初始化
int main()
{
int math[10]={0};
int english[5]={1,2,6};
char kk[4]={'a','b'}
double arr[5]={2.0,6.0};
//不完全的初始化
return 0;
}
2.一维数组的使用
数组下标
C语言规定数组有下标,下标是从0开始的
#include<stdio.h>
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;
}
数组的元素个数
3.在内存中的存储
数组在内存中连续存放的
随着下标的增长,地址由小到大。
三.二维数组
1.创建与初始化
type arr_name[常量名1][常量名2];
行 列
举例:
1. int arr[3][5];
2. double brr[5][6];
初始化 :
初始化时可以省略行,不能省略列
int arr[3][5] ={{1,2},{3,4},{5,6}};
int main()
{
int arr1[][4]={1,2,3};//一行
int arr2[][4]={1,2,3,4,5,6};//2行
return 0;
}
2.二维数组的使用
输入:
2 3 1 4 7 2 5 8 输出: 1 2 4 5 7 8
int main()
{
int n, m;//n行m列
scanf("%d %d", &n, &m);
int i = 0;
int j = 0;
int arr[10][10] = {0};
for (i = 0; i < n; i++)
{
for (j = 0; j <m; j++) {
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++) {
printf("%d ", arr[j][i]);
}
printf("\n");
}
return 0;
}
3.在内存中的存储
四.变长数组(C99)
变长数组(variable-length array),C语言术语,也简称VLA。是指用整型变量或表达式声明或定义的数组,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的。
C语言中,直到C99标准出现之前,声明数组时在方括号内只能使用整数常量表达式。而C99做了很大改进,允许数组的[ ]中的值是整形变量或是整形表达式。这就解释了下面的情况:
int main(){
int n;
scanf ("%d", &n);
int arr[n];
return 0;
}
虽然n确实是需要运行时动态确定的变量,但是在C99中,以这种变量作为数组大小的形式已经是允许的了。这样的数组就被称之为“变长数组”。
注意:变长数组是指用整型变量或表达式声明或定义的数组,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的。