指针指向谁,就把谁的地址赋给指针,指针变量和指针指向的内存变量是不一样的。不停的给指针赋值,相当于是不断的改变指针的指向。

在开发中要避免野指针的存在,在指针使用完毕之后,记得要给指针赋值成为NULL。

*就像一把钥匙,拿着指针变量中的地址区修改对应内存中的数值。

指针做函数参数是学习C语言中的核心内容。

间接赋值的三个条件

1,存在两个变量,

2,进行取地址赋值

3,,用*p来进行内存空间内容的修改。

指针的输入特性和输出特性。

字符串的两头堵模型。

字符串指向的内存空间如果是在常量区是不能进行修改的,如果想进行修改,就要显示的分配内存空间才可以

用const修饰指针。

每次进行递归调用的时候,都会将函数参数入栈。

关于递归有两点需要掌握:

递归参数的入栈模型

函数嵌套调用返回模型。

在进行递归调用的时候,一定要清楚哪些参数是不变的,哪些参数是变化的。

二级指针的内存模型:

二级指针做输入和输出模型

二级指针的第一种内存模型

在分配内存的时候,记得一定要free掉,同时避免野指针。将指针变量置成NULL。

指针做输出,被调用函数分配内存。

二级指针做输入的三中模型。

二级指针做输入的第一种内存模型:

指针数组,是数组,类型是指针变量。char * buf[] = {"abc","123","dfg"}。类似于这一种方式。基本操作就是排序或者是打印输出类似这一种的操作。

第二种内存模型:

问题的本质,就是,第二种内存模型和第一种内存模型的内存模型不一样,指针所指向的内存空间的数据类型是不一样的。

就是二维数组变量,不过二级指针变量会退化成为一级指针变量问题。

不能使用地中内存模型中的方式来求取元素的个数,因为第二种方式是一次性的分配指定大小的内存空间,可是你病并不一样对一次性的使用完全。

编译器只会关心有多少行,每行有多少列,关心这个就是关系步长的问题。

第三种内存模型:

自己定义内存空间,就是所谓的按需打造内存空间。其实和第一种模型没有他大的区别。

理解递归的两点

1、参数的入栈模型

2、函数的返回流程

关于C语言中的const,是优点区别的,最重要的一点就是区分指针类型和指针指向的变量空间是不同的概念。

多级指针避免野指针

数组类型,数组指针类型,指针数组类型。

多维数组名和一个指向数组类型的指针变量是类似的。

多维数组名的本质就是一个数组指针,每次跳一维数组的长度大小。

数组在作为函数参数的时候会退化成为一个数组指针。

在分配好内存之后习惯将内存数据置为0,这是为了更好的释放内存空间。便于判断是否对内存进行了操作。

最新文章

  1. 关于上传app遇到的一些棘手的小问题
  2. js控制固定div和随屏滚动div兼容多浏览器和纯css控制(来自网络)
  3. 树莓派安装3.5inch RPi LCD (A)显示屏
  4. c++ assert
  5. javascript数组去重算法-----3
  6. JAVA 数据权限设计
  7. 【007】【JVM——内存分配和恢复策略】
  8. SQL Mon 介绍
  9. SNS团队第一次站立会议(2017.04.22)
  10. Oracle_多行函数
  11. Linux显示按文件名降序文件
  12. SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置
  13. java中你不知道的字符串知识!!!
  14. Python——模块——随机模块
  15. ajax-hook
  16. BZOJ.3329.Xorequ(数位DP)
  17. 【PAT】1004. 成绩排名 (20)
  18. Openresty支持HTTP2
  19. 《学习OpenCV3》目录和全书划分
  20. 数据分析之Numpy-数组计算

热门文章

  1. GitFlow工作流常用操作流程
  2. 【转载】viewState详解
  3. Spring Security实现短信验证码登录
  4. Anaconda装OpenCV
  5. hadoop权威指南学习
  6. 输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER 请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR
  7. EasyNVR无插件播放HLS/RTMP网页直播方案前端完善:监听表单变动
  8. ElasticSearch架构思考(转)
  9. 搭建SVN服务器详细教程
  10. Dominant Resource Fairness: Fair Allocation of Multiple Resource Types