数组概念
一个或多个数的相同类型的数据放在一个组合里面
数组的初始化
type arr_name[常值量]
类型有:int char double short float
比如:
//一个班学生的名字,身高,分数 double height[5]; //身高 char name[5]; //名字 int xuehao[5]; //分数
一维数组
一维数组的初始化
关于行的写法
行可以不用写,vs会根据你所初始化的数来判断行
int arr[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] = { 1,2,3,4,5,6,7,8,9,10 }; // 0 1 2 3 4 5 6 7 8 9 (数组中元素对应的下标) printf("%d\n", arr[6]);//打印数组的数,对应的其下标 return 0; }
控制台打印输出:7
一维数组元素的个数sz
int main() { int arr[10]={ 1,2,3,4,5,6,7,8,9,10 }; int sz=sizeof(arr)/sizeof(arr[0]); printf("%d ",sz); return 0; }
控制台打印输出sz:10
打印一维数组
在vs中定义,在控制台中输出
int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0;// 0 1 2 3 4 5 6 7 8 9 (数组元素对应的下标) for (i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; }
在控制台输入并输出
容易理解版
int main() { int arr[10] = { 0 }; int i = 0; printf("请输入十个数:"); //输入 for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); } //输出 for (i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
简化版
int main() { int arr[10] = { 0 }; int i = 0; printf("请输入十个数:"); for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); //输入 printf("%d ", arr[i]); //输出 } printf("\n"); return 0; }
一维数组在内存中的储存
int main() { int arr[10] = { 0 }; int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; for (i = 0; i < 10; i++) { printf("&arr[%d]=%p\n", i, &arr[i]);//&arr[i]是取数组的每一位下标对应元素的地址 // i是数组的下标 } return 0; }
控制台打印输出一维数组各元素所对应下标的地址:
二维数组
二维数组的创建
type arr_name[常量值1][常量值2]
行 列
二维数组的初始化
//初始化两行三列 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,2,3},{4,5,6} };//初始化格式三
关于行列的写法
行可以不用写,vs会根据你所初始化的数来判断行,但是列必须要写
int arr[][3] = { {1,2,3},{4,5,6} };
二维数组元素的个数sz
二维的sz和一维的sz计算方式一样,二维数组的sz就是在计算行号。
int sz = sizeof(arr) / sizeof(arr[0]) ;
打印二维数组
容易理解版
int main() { int arr[3][3] = { 0 }; int i = 0;//i控制行 printf("请输出三行三列的二维数组:\n"); for (i = 0; i < 3; i++) { int j = 0;//j控制列 for (j = 0; j < 3; j++) { //输入 scanf("%d", &arr[i][j]); } } for (i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 3; j++) { //输出 printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
简化版
int main() { int arr[3][3] = { 0 }; int i = 0;//i控制行 printf("请输出三行三列的二维数组:\n"); for (i = 0; i < 3; i++) { int j = 0;//j控制列 for (j = 0; j < 3; j++) { scanf("%d", &arr[i][j]); printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
控制台打印输出:
二维数组在内存中的储存
int main() { int arr[3][3] = { 1,2,3,4,5,6,7,8,9 }; int i = 0;//i控制行 for (i = 0; i < 3; i++) { int j = 0;//控制列 for (j = 0; j < 3; j++) { printf("&arr[%d][%d]=%p\n", i, j, &arr[i][j]); } printf("\n"); } return 0; }
控制台打印输出: