1)、理解指针要把内存四区模型和函数调用模型相结合
前面已经讲述内存四区模型和函数调用模型、指针是为内存服务的,因此要深刻理解指针就要
把指针和内存四区以及函数调用模型相结合理解。
2)、主调函数,被调函数
1、 主调函数可把堆区、栈区、全局数据内存地址传给被调用函数
2、被调用函数只能返回堆区、全局数据
3)、主调、被调函数内存分配方式—-指针做函数参数输入输出特性
1、主调用函数分配内存,被调用函数使用内存—输入特性
2、被调用函数分配内存把结果输出给主调用(指针做函数参数和返回值做输出),
一般情况下都是分配堆区内存,然后由主调用函数析构该内存,这里注意避免野指针的产生
总结:
在项目开发中,深刻理解指针做函数参数,在主调和被调函数间的输入输出是关键点。
关键点1:主调和被调是哪个分配内存?
在C语言提供的库API函数中常见的字符串函数中通常能见到
char *strcpy( char *to, const char *from );
注意:const限定的函数参数一般是主调函数分配的内存,且该字符串做输入不能修改
这也就是const在函数参数中出现的原因
一般情况有经验的程序员写函数接口的时候如果是指针做“输入”会加/*in*/注释更清晰易懂
char *strcpy( char *to/*in*/, const char *from/*in*/ );
关键点2:函数参数是输入还是输出,返回值是输出特性