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

1 作业讲解

 

  1. 指针间接操作的三个必要条件

 

  1. 两个变量 其中一个是指针
  2. 建立关联:用一个指针指向另一个地址
  3. *

 

  1. 简述sizeof和strlen的区别

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

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

 

 

  1. 何为野指针

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

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

 

 

2  昨日回顾

3 字符串易犯错误模型

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

 

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

 

4 c语言中的const

 

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

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

 

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

 

char*const d; 指针不能改

 

5 字符串练习

 

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

 

栈上的指针数组:

 

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

 

 

 

 

 

6 字符串解析key-value练习

 

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

栈上的数组指针:

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

 

 

 

 

7 中午回顾

 

二级指针第三种模型:

 

堆上开辟空间:

 

 

 

 

 

 

 

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

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

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

11 多级指针作为函数参数

12 二级指针的内存四区图

 

指针数组:

 

二维数组:

 

 

手工二维内存:

 

13 替换子字符串练习

 

思路:定义两个指针

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

 

 

 

 

 

posted @ 2019-02-13 10:40  hh9515  阅读(508)  评论(0编辑  收藏  举报