对指针的分析.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对指针的分析

一直以来对指针的使用比较多,但都是基本使用,有时候也没从原理上去深究。某日,突来兴趣,分析了一下总结了以下几点。(本文中给出的地址示例没有考虑指针变量或普通变量的实际长度,只是给出了示意地址图,望不要在此问题上纠结)1. 关于普通变量,指针变量,指针的指针变量。inta;a=5;系统会自动为a分配一个空间。对变量a的赋值,即改变x+0地址中的内容。int*b;b=a;系统会自动为b分配一个空间。存放的是变量a的地址。对变量b赋值,即改变变量b单元中存放的内容。int**c;c+b;系统会自动为c分配一个空间。存放的是变量b的地址。系统内存地址(基地址设为x)变量名值备注x+2cx+1c=2;即c中存放的内容改为2.*c=2;即c中存放的地址中的地址的内容改变为2.**c=2;即c中存放的地址中的地址的内容改变为2.x+1bx+0b=2;即b中存放的地址该为2.*b=2;即b中存放的地址的内容改变为2.x+0a5a=2;即改变的是a的值,也就是内存空间x+0单元中的值。2. 关于函数的参数intfun(inta){a=0};intfun(int*a){a=2;*a=0};intfun(int**a){a=2;*a=0,**a=0};我们知道,函数都是按值传递的。即形参和实参是不同的变量。intfun(inta){a=0};中,传递了一个变量的值,在函数中改变了形参变量的值。这其实对实参没有做任何改变。理解示意图如下:普通变量参数 指针变量参数 指针的指针变量做参数3. 对函数free的理解。free只是告诉系统传入的指针指向的区域可以回收。并不改变传入指针变量的值。4. 对指针下标的理解。int*p;p=malloc(10);p[0]=0;p[1]=1;如上所示,其实对p[0]的引用,是对p所指向地址空间的内容的引用。等有时间的话,再从汇编代码来好好分析一下指针的奥秘。其实,对地址搞清楚了,指针就是一个纸老虎。

文档评论(0)

zilaiye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档