17 指针(3)_字符串

  1。数组名的理解

17 指针(3)_数组_02

17 指针(3)_字符串_03

17 指针(3)_字符串_04

整个数组的地址和首位元素的地址有什么区别

整型元素的地址加1跳过4个字节(&arr[0])


整个数组(int arr[10])的地址(&arr)加1跳过40个字节

例如

17 指针(3)_数组_05


17 指针(3)_字符串_06

(用指针输入数组的值)

17 指针(3)_字符串_07

17 指针(3)_数组_08

用arr也可以

17 指针(3)_字符串_09

*(arr + i) == arr[i] == i[arr] == *(i + arr)  ([]仅仅是操作符而已)

17 指针(3)_数组_10

(2)

17 指针(3)_字符串_11

17 指针(3)_二级指针_12


17 指针(3)_字符串_13

17 指针(3)_二级指针_14

传参的实质

别看test(int arr[10])中arr[10]实际上是指针变量而不是数组 所以sizeof(arr)只有4个字节
所以arr[]中的值可以省略掉因为没用

所以计算函数中  传过来的数组  的元素的个数不可以用sizeof

可以在主函数中算出来再传给函数

2(冒泡序列)

17 指针(3)_数组_15

代码

17 指针(3)_二级指针_16

有缺陷(还需要添加当没有发生互换时停止

17 指针(3)_字符串_17

(对部分有序的特别友善)

3  (二级指针)

1  

17 指针(3)_字符串_18

17 指针(3)_数组_19

二级指针是用来存放一级指针变量的地址

17 指针(3)_数组_20


17 指针(3)_数组_21

3(指针数组)

17 指针(3)_数组_22

(1)应用

17 指针(3)_字符串_23

(2)应用

17 指针(3)_数组_24



*******

17 指针(3)_二级指针_25

17 指针(3)_字符串_26

这里的 arr[i][j] = *(*(arr + i) + j)


给字符串分配空间把首字符的地址给p

17 指针(3)_二级指针_27

如果字符串作为表达式那这个字符串的值就是首字符的地址

17 指针(3)_字符串_28

无 法 改 变 *p(改变了会崩溃) 所以用 const来限制它

******

17 指针(3)_二级指针_29

17 指针(3)_字符串_30


17 指针(3)_数组_31

常量字符串储存在只读数据区

数组的地址(&数组名)

4(数组指针)

17 指针(3)_二级指针_32

17 指针(3)_字符串_33

17 指针(3)_字符串_34


17 指针(3)_字符串_35