数组是一组具有相同数据类型的变量集合,这里要注意两点,数组只能存储相同的数据类型和数组的内存是连续的,这位数组和指针的联系奠定了基础。
一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据
其格式为
类型说明符 数组名[常量表达式];
e.g.
int arr[3];
上式表达的是定义了一个一维数组,其数据类型是int,arr是数组名称,3表示的是数组长度。其包含的为arr[0]
,arr[1]
,arr[2]
,没有arr[3]
,使用arr[3]
会造成数组越界错误
数组的初始化有三种方式:
int arr[3] = {1, 2, 3};
int arr[3] = {1, 2};
int arr[] = {1, 2, 3};
要使用数组元素,就需要使用符合数组使用规则的使用方式,数组使用格式如下:
数组名[下标]
注:在数组中,下标是以0开始的
int arr[3] = { 1, 2, 3}; int i = 0; for (i = 0; i < 3; i++) { printf("arr[%d] = %d\n", i, arr[i]); }
int arr[5] = {1, 6, 7, 2, 5}; int max = arrx[0]; int i = 0; for (i = 1; i < 5; i++) { if (arr[i] > max) { max = x[i]; } } printf("max = %d\n", max);
int x[5] = { 9, 8, 3, 5, 2 }; int m = 0, n = 0; int temp = 0; int i = 0; printf("冒泡排序前:\n"); for (i = 0; i < 5; i++) { printf("%d ", x[i]); } printf("\n"); for (m = 0; m < 5 - 1; m++) { for (n = 0; n < 5 - 1 - m; n++) { if (x[n] > x[n + 1]) { temp = x[n]; x[n] = x[n + 1]; x[n + 1] = temp; } } } printf("冒泡排序后:\n"); for (i = 0; i < 5; i++) { printf("%d ", x[i]); } printf("\n");
二维数组可以看作一维数组的每个元素又是一个一维数组,其格式为:
类型说明符 数组名[常量表达式1][常量表达式2];
e.g.:
int arr[2][3];
二维数组的初始化:
int arr[2][3] = {{1, 2 ,3}, {4, 5, 6}};
int arr[2][3] = {1, 2, 3, 4, 5, 6};
int arr[2][3] = {{1},{1, 2, 3}};
注:对数组赋值时,二维数组的第一个下标可以省略,而第二个下标不可省略!
arr
<=> *arr
<=> &arr
<=> &arr[0][0]
<=> array[0]
在二维数组中。arr[0]
代表的是一个数组名,是一个右值。
arr + 1
与arr[0] + 1
代表的意义不同
二维数组的使用规则与一维数组类似,其格式为
数组名[下标][下标];
int arr[3][4] = { {1,2,3,4 }, {5,6,7,8}, {9,10,11,12} }; for (int i = 0; i < 3; i++) //循环遍历行 { for (int j = 0; j < 4; j++) //循环遍历列 { printf("arr[%d][%d] = %d \t", i, j, arr[i][j]); } printf("\n");//每一行的末尾添加换行符 }