关于c++指针的问题

我在学习指针的过程中遇到这个情况:#include<iostream>usingnamespacestd;intmain(){inta=3;int*p=&a;}可以编译通... 我在学习指针的过程中遇到这个情况:
#include <iostream>
using namespace std;
int main()
{
int a=3;
int *p=&a;
}可以编译通过,但是把int *p=&a;换成int *p;*p=&a;就出错了,这是为什么?
另外就int *p=&a而言,&a返回的不是a的地址吗,那*p不就等于a的地址了?指针变量p保存的又是谁的地址呢?经测试,int *p=&a;和int *p;p=&a;是等效的.
展开
 我来答
蒙面侍卫说数码
2011-07-22 · 超过37用户采纳过TA的回答
知道答主
回答量:120
采纳率:84%
帮助的人:29.4万
展开全部
一、int *p=&a;换成int *p;*p=&a;就出错了,这是为什么?
答:int *p意思是定义一个指针p。记住,这以后p代表的是一个指针了。因此下一句应该写为p=&a。

二、另外就int *p=&a而言,&a返回的不是a的地址吗,那*p不就等于a的地址了?
答:是p等于a的地址。顺便说一句,此后的*p中的*号是间接访问去处符,*p的意思是指针p所指向的变量的值。即*p=a。

关键处在于你要区分定义时的*p和定义后的*p不是同一回事。定义后p已经是一个指针,而定义前p只是一个变量名。
追问
也就是说*p=&a只有在定义指针的语句:int *p=&a;中有效?
追答
正解
kingyufei
2011-07-22
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
int *p是给指针定义的,*p表示指针指向的变量,而p指向该变量的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yiranshaoshuai
2011-07-22
知道答主
回答量:28
采纳率:0%
帮助的人:20.8万
展开全部
int *p的意思是定义一个指针p,int *p=&a,是先定义指针p,再将a的地址赋值给p,这个时候指针p就指向了a,*p==a;告诉你怎么记:*是降级,&的升级!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huanyefeng0809
2011-07-22
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
int *p是定义一个int型的指针。
可以用&把a的地址取出并赋给p。
但是你先定义了指针p。
*是间接寻址运算符。
*p就是一个int型的了。
不能把一个地址赋给他。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhdcpp2
2011-07-22 · TA获得超过159个赞
知道小有建树答主
回答量:254
采纳率:66%
帮助的人:59.8万
展开全部
变量名重复了,有没有重载,你定义了两个相同的变量,因该这么写
int *p;
p=&a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
洋凝桖0HC
2011-07-22
知道答主
回答量:34
采纳率:0%
帮助的人:0
展开全部
int *p = &a,&a是一个地址,地址中存储的内容为a,而*p是一个指针,指向的是这个地址,因此,这个语句中*p指的就是a
而对于int *p;*p=&a,这句话的意思,是指*p这个指针指向的是存放a这个变量的地址,因此,此时p中保存的是一个地址,这个地址中保存的又是a这个变量在内存中存放的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式