关于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;是等效的. 展开
#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;是等效的. 展开
13个回答
展开全部
一、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只是一个变量名。
答: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;中有效?
追答
正解
展开全部
int *p是给指针定义的,*p表示指针指向的变量,而p指向该变量的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int *p的意思是定义一个指针p,int *p=&a,是先定义指针p,再将a的地址赋值给p,这个时候指针p就指向了a,*p==a;告诉你怎么记:*是降级,&的升级!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int *p是定义一个int型的指针。
可以用&把a的地址取出并赋给p。
但是你先定义了指针p。
*是间接寻址运算符。
*p就是一个int型的了。
不能把一个地址赋给他。
可以用&把a的地址取出并赋给p。
但是你先定义了指针p。
*是间接寻址运算符。
*p就是一个int型的了。
不能把一个地址赋给他。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量名重复了,有没有重载,你定义了两个相同的变量,因该这么写
int *p;
p=&a;
int *p;
p=&a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int *p = &a,&a是一个地址,地址中存储的内容为a,而*p是一个指针,指向的是这个地址,因此,这个语句中*p指的就是a
而对于int *p;*p=&a,这句话的意思,是指*p这个指针指向的是存放a这个变量的地址,因此,此时p中保存的是一个地址,这个地址中保存的又是a这个变量在内存中存放的地址
而对于int *p;*p=&a,这句话的意思,是指*p这个指针指向的是存放a这个变量的地址,因此,此时p中保存的是一个地址,这个地址中保存的又是a这个变量在内存中存放的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询