数组 1.一维数组的创建和初始化 数组在创建的时候如果想不指定数组的确定的大小就得初始化。 数组的元素个数根据初始化的内容来确定。 注意: sizeof计算的是所占空间的大小,元素个数*元素类型(单位是字节) strlen 计算字符串中\0前的字符个数(\0不算字符串的内容) strlen 函数只有遇到\0后才停止计算长度 2.一维数组的使用 打印每一位元素一般用循环 3.一维数组在内存中的存储 p--->point指针的意思 %p就是打印地址的意思 每块空间存储 的是int 类型的 是4个字节,所以每个地址之间差4 以一个字节为一个存储单元 下标连续增长,地址连续 4.二维数组的创建及初始化 int arr[3][4]三行四列 当不完全初始化时,剩下的元素也默认的是0 1 2 3 4 5 0 0 0 0 0 0 0 可以将二维数组的每一行当做一个一维数组进行初始化 1 2 3 0
4 5 0 0 0 0 0 0 1 2 3 0 1 2 0 0 5.二维数组的存储 像一维数组一样是连续存放的 每一行的数组名像一维数组 二维数组可以看做多个连续的一维数组组成的一个数组 6.数组作为函数参数 冒泡排序 例: 思路: 两两相邻比较,一次冒泡,比较n-1次 若有n个元素则进行n-1趟冒泡排序 两两比较 9+8+7+6+5+4+3+2+ 注意: 函数中数组首元素的地址是4个字节,arr[0]是4个字节 函数实现: 1.可以用数组接收数组(传递arr用arr[]来接收可以不告诉数组的长度) 2.因为数组专递的是数组首元素地址,所以也可以使用指针来接收 代码优化 当有一趟冒泡排序后,发现没有数需要进行交换,说明数都排好序了,可以直接结束排序,退出打印 思路: 数组名到底是什么 1.数组名是首元素地址 两个例外: 虽然数值相同但是意义不同 因为&arr+1后跳过整个数组的空间