1。数组名的理解
整个数组的地址和首位元素的地址有什么区别
整型元素的地址加1跳过4个字节(&arr[0])
整个数组(int arr[10])的地址(&arr)加1跳过40个字节
例如
(用指针输入数组的值)
用arr也可以
*(arr + i) == arr[i] == i[arr] == *(i + arr) ([]仅仅是操作符而已)
(2)
传参的实质
别看test(int arr[10])中arr[10]实际上是指针变量而不是数组 所以sizeof(arr)只有4个字节
所以arr[]中的值可以省略掉因为没用
所以计算函数中 传过来的数组 的元素的个数不可以用sizeof
可以在主函数中算出来再传给函数
2(冒泡序列)
代码
有缺陷(还需要添加当没有发生互换时停止)
(对部分有序的特别友善)
3 (二级指针)
1
二级指针是用来存放一级指针变量的地址
3(指针数组)
(1)应用
(2)应用
*******
这里的 arr[i][j] = *(*(arr + i) + j)
给字符串分配空间把首字符的地址给p
如果字符串作为表达式那这个字符串的值就是首字符的地址
无 法 改 变 *p(改变了会崩溃) 所以用 const来限制它
******
常量字符串储存在只读数据区
数组的地址(&数组名)
4(数组指针)