资源描述:
《C++“指针”学习建议.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、%1.对于众多人提出的C/C++中指针•难学的问题做个总结:拆针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,捋针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例了,很多书上都有,对于学习的重点在于理解机和X的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout«*x*当定义了int*x;后对x=&a的理解的问题。仔细阅读和联系下面的两个例子我想指针问题就不是难点了!^includemeiinO{inta
2、,b;/*定义a,b两个整形变量用于输入两个整数*/int*point_1,*point_2,*temp_point;/*定义三个指针变量*/'scant'("%d,%d",&a,&b);/*格式化输入a,b的值*/point_l=&a;/*把指针变屋point_1的值指向变屋a的地址♦/point_2=&h;/*把指针变量point_2的值指向变量b的地址*/if(
3、oint_2;/*把point_2的值赋了point」*/point_2-temp_point;/*由于point_l的值已经改变无法找到,利用前面临时存储的也就是tcmp_point找回原point1的值赋Tpoint2,打到把point.l和point_2值对换的目的*/}printf("%d,%d:*point_l,*point_2);/'*利用*point」和*point_2也就是分辨指向b和a的方法把值显示屏幕I.*/}/*此题需要注意和了解是的此法并没有改变变量a,b的值只是利用指针变量分别存储a和I)
4、的地址,然后再把那两个指针变虽的值对换一下其实就是存储在指针变量里面a与h的地址对换,在利用*point」和*point_2的方式把调换后的值显示出来这里的*point_l实际就是a,此中算法并非真的改变a,b的值,而是利用指针进行地址交换达到大小排序的II的.*/#includemriinO{inta,b;/*定义“,b两个整形变量用于输入两个整数*/int*point_1,*point_2;/*定义三个指针变量*/scanf(*%d,%d:&a,&b);/*格式化输入a,b的值*/point_
5、l=&d;/*把指针变縈pointI的值指向变吐o的地址*/'point_2=&b;/*把指针变nilpoint2的值指向变3b的地址*/compositor(point_l,point_2);/*调用自定义的排序涵数,把a,b的地址传递给point1和point2*/printf(*%d,%d”,a,h);/*打印出a,b的值*/}staticcompositor(pl,p2)int*pl,*p2;/'*定义形式参数pl,p2为指针变量♦/{inttemp;/*建立临时存储变量*/if(*pl<*p2)/*如果*
6、pl7、*&pBuildingElement):为例来说明这个问题。在某种意义上,"孑和"『是意思相对的两个东西,把它们放在一起有什么意:义呢?。为了理解抬针的这种做迄我们先复习一下C/C++编程屮无所不在的指针概念。我们都知道MYCLASS*的意思:指向某个对象的指针,此对象的类型为MYCLASSoVoidfunc1(MYCLASS*PMyClass);//例如:MYCLASS*p=newMYCLASS;fund(p):上面这段代码的这种处理方法想必谁都用过,创建•-个MYCLASS对象,然后将它传入func1西数。现在
8、假设此函数要修改pMyClass:voidfund(MYCLASS*pMyClass){DoSomething(pMyClass);pMyClass=//其它对象的指针}第二条语句在函数过程中只修改了pMyClass的值。并没有修改调用者的变量p的值。如果p指向某个位于地址0x008