数组
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的
数组在内存中是连续存放的
4,二维数组
行是从0行开始的,列也是从0列开始的
打印一个三行四列的数组
二维数组在内存中的存储
将每一个元素的地址打印出来,打印地址用%p
二维数组也是连续存放的
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]
改进之后,注意如果有序的话就不用在比较
sizeof(数组名), 数组名表示的是整个数组, sizeof(数组名)计算的是整个数组的大小,单位是字节,&数组名,数组名代表整个数组,&数组名,取出的是整个数组的地址
printf(“%p\n”,arr);首元素地址
printf("%p\n",&arr(0));首元素地址
printf("%p\n",&arr);得到的是数组的地址,虽然是第一个元素的地址,但是表示从第一个元素的地址开始