目录
一维数组的创建和初始化
一维数组的创建方式
数组的初始化
一维数组的使用
一维数组在内存中的存储
二维数组的创建和初始化
二维数组的创建
初始化——创建的同时给其赋值
二维数组的使用
二维数组在数组中的储存
数组作为函数参数
一维数组的创建和初始化
数组:一组相同类型元素的集合
一维数组的创建方式
//数组初始化实例 int arr1[3]; char arr2[8]; double arr3[20];
注意:数组创建,[]中要给一个常量才可以,不能使用变量
数组的初始化
数组的初始化是指,在创建数组的同时给数组内容一些合理的初始值(初始化)
//完全初始化
int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
//不完全初始化(数组长度为10,后5个补0)
int arr2[10] = { 1,2,3,4,5 };
//根据初始化内容确定数组长度的初始化
int arr3[] = {1,2,3,4,5,6};//数组长度为6
//关于字符数组的第一种写法
char ch1[5] = "bit";//不完全初始化,后面用' '补充
char ch2[] = "bit";//数组长度为3
//关于字符数组的第二种写法
char ch3[] = { 'b','i','t' };//一共3个元素
char ch4[6] = { 'b','i','t' };//一共6个元素,其他为' '
一维数组的使用
[]:下标引用操作符,通过下标来访问数组中的元素,数组下标从0开始
#includeint main() { int arr1[10] = { 0 }; arr1[4] = 5;//将数组第5个数改为5 int sz = sizeof(arr1) / sizeof(arr1[0]); //遍历数组 int i = 0; for (i = 0; i < sz; i++) { printf("%dn", arr1[i]); } return 1; }
一维数组在内存中的存储
- 一维数组的每个元素在内存中是连续存放的
- 随着数组下标的增长,地址由低到高变化
- 数组名是首元素的地址
二维数组的创建和初始化
二维数组的创建
二维数组的创建
初始化——创建的同时给其赋值
//完全初始化
int arr1[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
//不完全初始化——后面补0
int arr2[3][4] = {1,2,3,4,5,6,7};
//第二种方法
int arr3[3][4] = { {1,2},{3,4},{4,5} };//这里不完全初始化,后两列补0
//第二种根据后面元素来确定行数,但一行有几个元素不能省略
int arr3[][4] = { {1,2},{3,4},{4,5} };
二维数组的使用
二维数组的操作也是通过下标[][]
#includeint main() { //遍历二维数组 int arr1[][4] = { {1,2},{3,4},{4,5} }; int i = 0; int j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("%d ", arr1[i][j]); } printf("n"); } return 1; }
二维数组在数组中的储存
- 二维数组在内存中也是连续存放的(一行内部连续,换行也是连续)
- 二维数组在内存中存放就是一个很长的一维数组
#include
int main() {
//遍历二维数组
int arr1[][4] = { {1,2},{3,4},{4,5} };
int i = 0;
int* p = &arr1[0][0];
for (i = 0; i < 12; i++) {
printf("%d ", *p);
p++;
}
return 1;
}
数组作为函数参数
数组在传参的时候传递的是数组首元素的地址
数组名是数组首元素的地址但是有2个例外
- sizeof(数组名)——数组名表示整个数组计算的是整个数组的大小单位是字节
- &数组名——数组名表示整个数组,取出的是整个数组的地址
#includeint main() { int arr[10] = { 0 }; printf("%pn", arr); printf("%pn", arr+1);//差4 printf("%pn", &arr); printf("%pn", &arr+1);//差40 return 1; }



