数组

1,一维数组的创建与初始化

type_t arr_name [const_n]

int arr[10];

char arr2[5];

错误 char ch[n]; 不能放变量n 只能放常量

2,数组的初始化

int arr[10]={1,2,3}; //不完全初始化,剩下的元素默认初始化为0

char arr2[5]={'a','b'};// 不完全初始化,剩下的元素默认初始化为0

char arr3[5]="ab";//也可以这样写,前两个是'a','b',剩下为0

char arr2[5]={'a',98};//仍然是'a','b',剩下0

char arr4[]="abcdef";//放了七个元素 abcdef0

sizeof 是计算arr4所占空间的大小,7    计算变量,数组,类型的大小,单位是字节,是一个操作符,不需要头文件

strlen 是计算字符串的长度,遇到\0就停止, 6   是库函数,需要引头文件

3,一维数组的使用

[ ]下标引用操作符

arr[3] 表示数组中下标为3的

c语言 day8_9_18_学习


c语言 day8_9_18_学习_02数组在内存中是连续存放的

4,二维数组

c语言 day8_9_18_学习_03

行是从0行开始的,列也是从0列开始的

打印一个三行四列的数组

c语言 day8_9_18_学习_04

c语言 day8_9_18_学习_05

二维数组在内存中的存储

将每一个元素的地址打印出来,打印地址用%p

c语言 day8_9_18_学习_06

c语言 day8_9_18_学习_07

二维数组也是连续存放的


5,数组作为函数参数

实现一个冒泡排序函数将一个整形数组排序

冒泡排序

10 9 8 7 6 5 4 3 2 1

把相邻的两个元素比较,最终发现变成 9 8 7 6 5 4 3 2 1 10, 10被拿到了最后此次进行了9次比较,

这时我们只需要比较 9 8 7 6 5 4 3 2 1,在进行两两比较,最终把9拿到后面,此次进行了8次比较

后面接着比较。。。



数组进行传参时,传的是数组的首元素地址,相当于&arr[0]


c语言 day8_9_18_学习_08

c语言 day8_9_18_学习_09

改进之后,注意如果有序的话就不用在比较

c语言 day8_9_18_学习_10

sizeof(数组名), 数组名表示的是整个数组, sizeof(数组名)计算的是整个数组的大小,单位是字节,&数组名,数组名代表整个数组,&数组名,取出的是整个数组的地址

printf(“%p\n”,arr);首元素地址

printf("%p\n",&arr(0));首元素地址

printf("%p\n",&arr);得到的是数组的地址,虽然是第一个元素的地址,但是表示从第一个元素的地址开始