C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

时间:2023-03-08 22:24:58

1 作业讲解

  1. 指针间接操作的三个必要条件
  1. 两个变量 其中一个是指针
  2. 建立关联:用一个指针指向另一个地址
  3. *
  1. 简述sizeof和strlen的区别

strlen求字符串长度,字符数组到’\0’就结束

sizeof是看数据类型占用大小(字节

  1. 何为野指针

声明指针变量后,内部数是随机的,为了避免野指针,初始化的时候要设为NULL

使用完之后,依然要设为NULL

2  昨日回顾

3 字符串易犯错误模型

判断一个指针是否合法应该看这个指针的值是不是NULL 而不是看*的内容

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

(错,最后a的位置已经变了,

4 c语言中的const

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

const int b; //具有了只读的属性

int*a = &b; *a = 30; // 变了

const char* c ‘指针指向的值不能改’

char*const d; 指针不能改

5 字符串练习

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

二级指针第一种输入模型:

栈上的指针数组:

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

(指针数组,数组内部存的是字符串常量区的数据

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

6 字符串解析key-value练习

二级指针第二种输入类型:

栈上的数组指针:

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

(注意,不能用char ** array 作为形参,因为 char **array的步进是4

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

7 中午回顾

二级指针第三种模型:

堆上开辟空间:

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

8 二级指针作为传入参数1

9 二级指针作为传入参数2

10 二级指针作为传入参数3

11 多级指针作为函数参数

12 二级指针的内存四区图

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

指针数组:

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

二维数组:

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

手工二维内存:

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

13 替换子字符串练习

思路:定义两个指针

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

一个指针先走,遇到要替换的停下来,把之前这段复制到dst中,然后指针加要被替换的字段的长度。接下来,重新走这个流程,直到最终指针指向’\0’

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间