数组的基本知识
注意:数组类型是int[常量],数组元素类型才是int
c99标准之前数组的大小只能是常量指定,不能使用变量
c99之后为什么就使用变量呢?---变长数组
变长数组:数组大小可以根据输入的变量决定其大小的数组--如下
int n;
scanf("%d",&n);
int array[n];
//%p-打印地址 #include<stdio.h> int main() { int num1[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0; for (i = 1; i < 10; i++)//产生0-9的下标 { printf("&arr[%d]=%p\n",i,& num1[i]); } return 0; }
结论:1.数组在内存中是连续存放的
2.随着下标的增长,地址是由低到高变化的
一维数组的输入和输出:
#include<stdio.h> int main() { int num1[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0; //输入 for (i = 0; i <= 9; i++)//产生0-9的下标 { scanf("%d", &num1[i]); } //输出 for (i = 1; i < 10; i++)//产生0-9的下标 { printf("%d", num1[i]); } return 0; } 数组的输入:输入的是数组元素,输出的的也是元素
数组个数的计算:sizeof
❗注意:计算数组大小如果是类型括号不可以省略
例如:
#include<stdio.h> int main() { int a = 10; //size_t printf("%d\n", sizeof(int)); printf("%d\n", sizeof(a)); printf("%d\n", sizeof a); return 0; }
sizeof 的计算结果是size_t类型的
size_t 是无符号整型
二维数组
定义:将一维数组作为数组元素 ,二维数组的每一个元素是一维数组
二维数组的创建:
语法:
type arr_name[常量1][常量2];
eg:
int arr[3][5];---表示的是三行五列int类型的二维数组,arr是数组名可以自己取
如何进行初始化:
元素按照行的个数进行排放,若有多则换行,若初始化不完全则会补0
如何按照行进行初始化:
因为二维数组的元素是一维数组所以只需要给里面元素加一个{}进行划分即可进行按行输出,如下:
二维数组的访问
利用下标结合for循环进行遍历,数组的行和列都是从0开始的
#include<stdio.h> int main() { int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6} ,{3,4,5,6,7} }; //printf("%d\n",arr[1][3]);//[]下标引用操作符 int i = 0; for (i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 5; j++) { printf("%d", arr[i][j]); } printf("\n"); } return 0; }
运行结果:
二维数组的输入和输出
#include<stdio.h> int main() { int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6} ,{3,4,5,6,7} }; //printf("%d\n",arr[1][3]);//[]下标引用操作符 //输入 int i = 0; for (i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 5; j++) { scanf("%d", &arr[i][j]); } } //输出 for (i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 5; j++) { printf("%d", arr[i][j]); } printf("\n"); } return 0; }
输入数据后的运行结果:
#include<stdio.h> int main() { int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6} ,{3,4,5,6,7} }; //printf("%d\n",arr[1][3]);//[]下标引用操作符 int i = 0; for (i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 5; j++) { printf("arr[%d][%d]=%p\n",i,j, &arr[i][j]); } printf("\n"); } return 0; }
运行结果:
arr[0][j] arr[1][j] arr[2][j]
由上运行结果可知,二维数组在内存中也是连续存放的.
arr[0],arr[1],arr[2]可以看成是二维数组的数组名