C++指针问题,求助啊!

来源:百度知道 编辑:UC知道 时间:2024/05/08 04:29:31
最近学指针,好难啊,很乱,搞不懂啊 55555
int a[5],*pa=a 和 int *pa =a+5
是不是等价啊
还希望高手说下指针的学习,深入浅出....
在题中,有的写的是前者,有的是后者,都乱了

不等价
我教你一个好记的方法
把"*"理解成读内容(实际上是叫解除引用)
这样*p就是把p(这个变量放的是一个地址)这个地址的内容读出来...而在声明指针时(比如int),int *p,就把"int *"看成是一个格式(其实指针是复合类型,这样理解也是对的)
这样指针的表示就容易理解了
再说数组,数组名是不可改变的指针...也就是说数组名就是指针,a[]中a是一个指针,装着一个地址,由上面指针的理解可以看出*a就是a[0],*(a+1)就是a[1]
OK,此时你应该明白了...*a 和 a[]是一个意思...
int *p = a+5 是说 定义一个指针p指向a[5]...
HOHOHO...指针是C的精华...慢慢就好了...

别着急~编程序切记心烦气乱,还有当你没有彻底弄懂指针的时候,千万不要自己尝试编一些程序,因为自己编的程很可能是错的,一开始就是错的,那么只会在错的过程中盘旋~
我写几个语句让你理解一下:
int a=20;//定义一个变量a
int *p[3];//定义一个数组指针p[3],“*”的意思是让你知道“*”后面是一个数组指针p[3]。
p[0]=&a;//把a的地址放入数组指针p[0]中
*p[0]就等于a,也就是*p[0]=20,p[0]是一个用来存放a地址的数组指针。
你也可以这样理解:
*是访问,p[0]是地址,*p[0]就是访问p[0]这个地址的内容。

不等价
指针存取的是地址
你的那第二个指针*pa的地址比第一个指针*pa的地址高
使用指针,主要是细心,记住指针的指向
多分析一些程序例子,慢慢就会熟悉的,一定细心,冷静,切忌浮躁

按你的来说若a='abcd\0',则,则pa='abcd\0',c='\0',
这两个不是等价的,应该是int a[5],*pa=a 和 int *pa =a等价,此时pa为指向数组a的指针.
你可以体会下下面的程序.
#include<