(C“指针”学习建议.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(C“指针”学习建议

一.对于众多人提出的c/c++中指针难学的问题做个总结:   指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout*x|x;,当定义了int *x;后对x=a的理解的问题。仔细阅读和联系下面的两个例子我想指针问题就不是难点了! #include?stdio.h? ? main()? {? int?a,b;?/*?定义a,b两个整形变量用于输入两个整数?*/ int?*point_1,*point_2,*temp_point;?/*?定义三个指针变量?*/ scanf(%d,%d,a,b);?/*?格式化输入a,b的值?*/ point_1=a;?/*?把指针变量point_1的值指向变量a的地址?*/ point_2=b;?/*?把指针变量point_2的值指向变量b的地址?*/ if?(ab)? {? ????temp_point=point_1;?/*?这里的temp_point是用于临时存储point_1的值也就是变量a的地址的?*/ ????point_1=point_2;?/*?把point_2的值赋予point_1?*/ ????point_2=temp_point;? ????/*?由于point_1的值已经改变无法找到,利用前面临时存储的也就是temp_point找回原point_1的值赋予point_2,打到把point_1和point_2值对换的目的*/ }? printf(%d,%d,*point_1,*point_2);?/*?利用*point_1和*point_2也就是分辨指向b和a的方法把值显示屏幕上?*/ }? ? /*?此题需要注意和了解是的此法并没有改变变量a,b的值只是利用指针变量分别存储a和b的地址,然后再把那两个指针变量的值对换一下其实就是存储在指针变量里面a与b的地址对换,在利用*point_1和*point_2的方式把调换后的值显示出来这里的*point_1实际就是a,此中算法并非真的改变a,b的值,而是利用指针进行地址交换达到大小排序的目的.?*/ #include?stdio.h? main()? {? int?a,b;?/*?定义a,b两个整形变量用于输入两个整数?*/ int?*point_1,*point_2;?/*?定义三个指针变量?*/ scanf(%d,%d,a,b);?/*?格式化输入a,b的值?*/ point_1?=?a;?/*?把指针变量point_1的值指向变量a的地址?*/ point_2?=?b;?/*?把指针变量point_2的值指向变量b的地址?*/ compositor(point_1,point_2);?/*?调用自定义的排序涵数,把a,b的地址传递给point_1和point_2?*/ printf(%d,%d,a,b);?/*?打印出a,b的值?*/ }? static?compositor(p1,p2)? int?*p1,*p2;?/*?定义形式参数p1,p2为指针变量?*/ {? int?temp;?/*?建立临时存储变量?*/ ????if?(*p1*p2)?/*?如果*p1p2,注意这里的*p1和*p2其实就是a和b?*/ ????{? ????????temp?=?*p1;?/*?利用变量temp用于临时存储*p1和就是a的值?*/ ????????*p1?=?*p2;?/*?将*p1的值也就是a的值换成*p2的值也就是b的值,等价于a=b?*/ ????????*p2?=?temp;?/*?将*p2的值也就是temp的值等价于b=temp?*/ ????}? }? ? /*?注意:此题与上题不同的是,直接改变了a于b的值达到真实改变的目的?*/ 二.C++指针使用方法解惑 “void ClearList(LNode * HL)” 仔细看一下这种声明方式,确实有点让人迷惑。 下面以void func1( MYCLASS *pBuildingElement ); 为例来说明这个问题。在某种意义上,*和是意思相对的两个东西,把它们放在一起有什么意义呢?。为了理解指针的这种做法,我们先复习一下C/C++编程中无所不在的指针概念。我们都知道MYCLASS*的意思:指向某个对象的指针,此对象的类型为MYCLASS。 Void func1(MYCLASS *pMyClass); // 例如: MYCLASS* p =

文档评论(0)

84537592 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档