C语言之指针专题三:理解指针要和内存四区模型和函数调用模型相结合
2017-10-08 23:32
387 查看
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:函数参数是输入还是输出,返回值是输出特性
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:函数参数是输入还是输出,返回值是输出特性
相关文章推荐
- C语言之指针专题三:理解指针要和内存四区模型和函数调用模型相结合
- c++学习笔记 内存四区 函数调用模型 指针强化
- C语言模型:内存四区模型和函数调用模型
- c++学习笔记 内存四区 函数调用模型 指针强化
- 关于C语言中一,二级指针函数中的使用和c语言中和函数发生调用时,实参和形参都会占用内存吗?
- iOS小明开发笔记(二十二) (C语言之内存四区和函数调用模型)
- C/C++学习之C提高----函数调用模型、指针做函数参数、字符串的基本操作、一级指针内存模型建立
- C语言之内存四区模型和函数调用模型
- 【C/C++语言基础学习】在主函数的定义的指针数组、二维数组通过三级指针在被调用函数分配内存
- <2> 内存四区和函数的调用模型
- 【C语言提高09】【指针铁律】铁律3:理解指针必须和内存四区概念相结合
- C语言之内存四区模型和函数调用模型
- C语言之内存四区模型和函数调用模型
- C语言变量 常量 内存四区 函数调用模型
- iOS海哥开发笔记 (海哥原创,C语言之内存四区模型和函数调用模型)
- 深入内存模型和函数调用机制,理解析构函数的执行顺序
- C语言提高之技术模型层次、学习标准、特点、内存四区、函数调用模型
- C语言中的内存四区与函数调用模型
- C语言之内存四区模型和函数调用模型
- iOS陆哥开发笔记(二十四) (C语言之内存四区和函数调用模型)