p=&a[2]与*p=&a[2]有什么区别

作者&投稿:枕物 (若有异议请与网页底部的电邮联系)
*p=&a,*p=a和p=&a各是什么意思,有什么区别?~

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.指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型。指针类型描述了一种对象,其值为对被引用类型的实体的引用。
参考资料:百度百科——指针

首先来说一下*和&,为了便于理解你可以认为,这里*是取内容,&是取地址。
我不讨论它们的区别,因为*p=&a这个形式一般是错的,常用的是p=&a。
下面比较*p=a和p=&a。看图,图很详细。
显然它们是等价的。
然后比较*p=&a和p=&a;
则这两种都是对指针变量的赋值,赋值有两种形式
①先定义后赋值
int a=3,*p;(定义指针变量*p)
p=&a;(对指针变量取地址)
②定义变量的同时赋值
int a=3,*p=&a

也就是说在赋值时,
int *p=&a
相当于
int *p,
p=&a

它们的区别其实就是
int *p=&a是同时定义*p并对赋值p(即a的地址赋给P),而p=&a,只是对P赋值,没有定义指针变量。
但要注意,只有在同时定义赋值时“*p=&a”这种写法才是对的
其他情况下不要用*p=&a,这种形式,因为根本就不对,如下图。我之前一直的疑问是为什么赋值时*p=&a就不算错了?后来老师给的解释是这种形式只有在上面那种情况下成立,其他的情况确实都是错的。

一楼搞笑哦。。
根据楼主的提问。我是这样理解的:
第一个是p指针,指针的值为数组第二个元素的地址。
第二个p是指向指针的指针,也就是说p中存取的是地址,而p中存的地址又是一个指向其他地址的指针。所以第二个赋值语句是指,将p指向的地址中的地址赋上数组第二个的地址。。

P=&a[2]是把数组中的常量赋值给变量P *P=&a[2]是指针变量*p指向&a[2]里的常量!

p=&a[2];//这个是赋值用的
int *p=&a[2];//这个是定义的时候初始化用的,两者效果一样


跟别人聊天,别人回复等于号(“=”)是什么意思啊?
晕了! 就是这个人现在忙 叫你等等的意思!

js 中“=== !== || !! ”语句是什么意思?
意思是当鼠标指向控件时该控件获得焦点,而获得焦点时使控件中的文本被选中。===表示类型什么的全部相等,!==表示要全部不想等包括类型或者的意思。||‘或’两边只要有一个为真的时候表达式就为真。!‘非’非后面的为真表达式就为假后面为假的表达式就是真的,就是相反的意思。!!一般用来将后面...

"= ="什么意思
这是一种网络表情,由两个等于号组成,但要注意与代“等等”的“==”区别开来。这个也可以当做表情符号。一个“=”可看作眼睛(双眼皮,“- -”即为单眼皮,= -或- =就是一单一双看使用者实际情况)。含义有很多,可耻笑可沉默可思考可眯眼可无奈可鄙视也可以是使用者对双眼皮的渴望(雾),...

= =+的意思是啥……
这是一种表情,= =就像人眯着两眼,表达对事物,极品或奇葩的无奈与鄙视,那个加号在动漫里比较常见,就像二次元里动漫人物眼角处的闪光,表达对发生事物有点感兴趣,或发现了什么重点或是关注事件的意思。综合来讲就是发现了某些很极品的人或事,然后表达深深的无奈与鄙视(以上纯属个人简介)...

新人求助,c++中,=是什么意思
在c++中“=”即等号是一个赋值运算符。比如 int a;a = 2; \/\/这里就是赋值运算。

java里的 “!=” 和“==”什么意思呀
"=="代表等于,是个判断,判断两边是否相等。“=”是赋值, n=0就是把0赋给n,n就变成0了 n==0也是判断,如果你前面给n赋值了,会判断他是不是和0相等,如果n是0,这个就返回true,否则返回false;

\/=属于什么符号
不等号(Signofinequality)是用以表示两个量数之间不等关系的符号。现在常用的有“≠”(不等号)、“>”(大于号)、“<”(小于号)、“≥”(大于或等于)及“≤”(小于或等于)。常用符号:“=”是等号,“≈”是近似符号(即约等于),“≠”是不等号,“>”是大于符号,“<”是小于...

“\/”和“==”有何区别?
1、“∵”表示:因为。2、“∴”表示:所以。3、“∷”表示:等于,成比例。4、这是一个数学专用术语。5、“∵”与“∴”是瑞士数学家Johann Rahn 首先使用的,他在1659年出版的一本数学书《Teusche Algebra》 里以「∴」及「∵」两种符号表示「所以」,其中以「∴」用得较多。

符号“:=”是什么意思?
& 是和、与的意思,英文符号相当与and这个词。字符 & 的最早历史可以追溯到公元1世纪,是拉丁语 et 的连写。最早的 & 很像 E 和 T 的组合,但随着印刷技术的发展,这个符号逐渐形成自己的样式,并脱离其原始的影子。

c语言中 ":=" (冒号 等于)是什么意思
在C中 是没有:=的 :=是一些脚本,比如makefile等的用法 表示= 但和=略有区别,一般用作初始化。在C中,不存在:= 只有 += -=等和数学操作相关的。至于三目运算符 只有?: 一个

前进区14739119368: p=&a[2]与*p=&a[2]有什么区别 -
斋态山花: 一楼搞笑哦..根据楼主的提问.我是这样理解的:第一个是p指针,指针的值为数组第二个元素的地址.第二个p是指向指针的指针,也就是说p中存取的是地址,而p中存的地址又是一个指向其他地址的指针.所以第二个赋值语句是指,将p指向的地址中的地址赋上数组第二个的地址..

前进区14739119368: 在计算机二级中若定义:int a=511,则*p=&a与p=&a有什么区别?
斋态山花: 如果p是指针变量,那么有2种合法的表达方式: 1、在定义语句中为指针p赋值,令其指向变量a int a=511;int *p=&a; 2、在赋值语句中指针p赋值,令其指向变量a int a=511,*p;p=&a

前进区14739119368: c语言中*p=a与*p=&a有什么区别 -
斋态山花: 让我来综合一下吧 在定义的时候 int *p=&a; 是等同于 int=*p; p=&a;的.该形式只在定义的时候是正确的.就是指针p所指向地址的内容为a的内容. 如果不是定义的时候 *p=&a; 就是它字符的那个意思,就是指针p所指向地址的内容为a的地...

前进区14739119368: int a=2,p=&a和*p=&a和*p=a哪个是正确,为什么不正确 -
斋态山花: 这是 指针的问题,p=&a中p仍然是int型变量不可以将a的地址赋值给他; *p=a中p是指针变量存放的是地址不能将int型变量的值赋值给他. 所以 *p=&a就是 正确的咯 ,希望能帮到你.

前进区14739119368: 来高手!求解! C语言中,指针 定义int a,*p=&a;中的*p=&a 和表达式中的 p=&a; 有什么区别? 是不是一样的?
斋态山花: 1.*p=&a等价于int *p;p=&a; 也就是该指针是个2维指针,是指向了另一个指针的地址后再让那个指针指向a的地址 指针变量前面的 "* ".表示该变量的类型为指针变量. 2.p=&a把变量a的地址赋给p.

前进区14739119368: int a[2][3]={0,1,2,3}, *p; p=&a[2]; * -- p -
斋态山花: 什么也不是!就p=&a[2];这一句就不会过编译,因为a是二维数组,所以&a[2]是int (*)[3]型的,而p是int *型的,等号两边类型不配!如果是p=a[2];的话,那*--p就是0了.因为:编译器把int a[2][3]={0,1,2,3}解释为int a[2][3]={{0,1,2},{3,0,0}},a[2]已经越界指向最后一个0后面了,但它由p=a[2];传递给p后,经过了--p,这样p就指向最后一个0了,再由*取出值来自然是0.

前进区14739119368: c语言中int*p=a与int*p=&a有什么区别???求大侠帮忙!!! -
斋态山花: 区别很大,第一个是把a赋给指针变量p,a变量必须存放的是指针值;第二条语句是把a变更本身的内存地址拿出来,赋值给指针变量p.

前进区14739119368: c语言指针求问 看如下两个表示的区别 1 int a=1, *p; p=&a; 2int -
斋态山花: 一样的,只是p指针的初始化方式不同而已,1、的是在定于的时候初始化2、的是在定于后初始化 指针本质就是存储内存地址的一个变量.所以指针可以指向某个变量在内存中存储的单元格嘛.变量去访问单元格最后也是编译器通过变量名和地...

前进区14739119368: C语言指针问题:在定义指针时*p=a和p=a有区别吗? -
斋态山花: 在定义指针时,指针变量名前的*号是必须的,不能少,区别于普通变量, 说明当前变量是指针变量,而不是普通的变量.对于你的问题,我举例说明:情形一:int a[5]={1,2,3,4,5}; int *p=a;//这是在定义指针变量p的同时就直接给它初始化,即把数组a的首地址赋给它.情形二:int a[5]={1,2,3,4,5}; int *p;//声明指针变量p p = a; 这里的话是先声明指针p,然后再对它初始话,等价于情形一,只是分开写法而已.

前进区14739119368: 10、设有int a[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是; ( ) -
斋态山花: &a[0]相当与a,即p指向数组的首地址,也就是a.*p=&a[0]<=>p=a;*p++;++和*号都是右结合顺序的,因此相当与取出p所指向的数后p自增1;所以a[0]不变;*p+=1<=>*p=*p+1;此时p指向的是a[1];所以相当于a[1]=a[1]+1;所以a[1]=12,a[13]没操作.所以还是12,素以因该是10,12,12

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网