*p=&a,*p=a和p=&a各是什么意思,有什么区别?

有一个指针p和一个变量a;请问上述表达式各是什么意思,有什么区别... 有一个指针p和一个变量a;

请问上述表达式各是什么意思,有什么区别
展开
 我来答
百度网友12db346
高粉答主

推荐于2019-11-02 · 关注我不会让你失望
知道小有建树答主
回答量:762
采纳率:100%
帮助的人:19.8万
展开全部

1.一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。

2.*p=a的意思:将a的值赋给p指针指向的地址的值;

3.p=&a的意思是:将a的地址赋给指针p;

4.区别:*p是一个值;p是一个地址;两者完全不相同。

5.*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;p是指针,可以理解为所指向的值的地址,*p就是取p指针指向的地址的值,&a就是取a的地址。

扩展资料:

指针的两种含义:一是作为数据类型,二是作为实体

1.指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。指针一般出现在比较底层的程序设计语言中,如C语言。高层的语言如Java一般避免用指针,而是引用。

2.指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型。指针类型描述了一种对象,其值为对被引用类型的实体的引用。

参考资料:百度百科——指针

杭州彩谱科技有限公司
2020-07-03 广告
*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。 第二个是让p指向a的地址空间。*p的傎和a相等。 int a=2,*p; *p=&a; 打印*P应该是一个地址值,很长一串, p=&a; 打*P印结果会... 点击进入详情页
本回答由杭州彩谱科技有限公司提供
jiji1008135456
推荐于2019-08-16 · TA获得超过5165个赞
知道答主
回答量:19
采纳率:0%
帮助的人:2575
展开全部

表达式的意思:

1、*p=a的意思:将a的值赋给p指针指向的地址的值;

2、p=&a的意思是:将a的地址赋给指针p;

3、*p=&a的用法错误。

区别在于:

p=&a就是用a的地址对p赋值,a是一个变量,&a就是存储这个变量的内存地址,指针存储的就是一个地址,*p就是这一地址中的内容。

扩展资料

另类*和&

两个地方要注意: 在程序声明变量的时候的*,只是表明“它是一个无符号整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;

在C++程序声明变量的时候的&,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。

这点不要和(*)声明符,(&)操作符混淆。

参考资料来源:百度百科:指针

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0becc05
推荐于2017-10-04 · TA获得超过1869个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:124万
展开全部
*是解引用运算符 &是取地址运算符

*p=&a这样写是不正确的(除非p是指向指针的指针),这时候*p前面要有类型符(比如int等),通常的情况是这样用的int *p=&a;这一句作用相当于int *p; p=&a; 两句,这句话的意思是定义一个int类型指针,然后用a的地址给p赋值;

对于指针p来说,*p就是指针p所指向的内存空间存储的值,*p=a就是把p所指向的那一内存空间的值赋值为a,p本身不改变

p=&a就是用a的地址对p赋值,a是一个变量,&a就是存储这个变量的内存地址,指针存储的就是一个地址,*p就是这一地址中的内容,这样说能明白吗??不明白来问我吧,我百度hi经常在线
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
volcanol的技术窝
2009-03-07 · TA获得超过974个赞
知道小有建树答主
回答量:867
采纳率:0%
帮助的人:446万
展开全部
这个问题如下所述:
int b=5;a=10;// 定义变量a,并赋值为10;b=5
int *p=&b; //定义指针变量p,并且让指针p指向变量b,其中 & 为
//取地址运算符
*p=a; //是将a的值就是10存放到指针p指向的变量b,这样b的值不再是
// b=5,而是变成b=10
p=&a;// 这句是改变p 的指向,让p指向变量a。例如还有下面的语句
*p=123; //那么这样后就会有p指向的变量的值为123.此处是a=123.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友03547eb
2018-08-30 · TA获得超过231个赞
知道答主
回答量:40
采纳率:50%
帮助的人:4万
展开全部

直接看代码运行结果就清楚了。

#include<stdio.h>

int main()
{
    int a=2,*q,*p=&a;
    printf("a=%d\n",a);  
    printf("p=%d\n",p);
    printf("*p=%d\n",*p);
    q=&a;
    printf("q=%d\n",q);
    printf("q=%d\n",*q);
    return 0;
}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式