C语言中*p++该该怎么理解,*和++是同一运算级,从右向左啊,是不是p中的地址自加后再指向另一个变量?

作者&投稿:兆昆亨 (若有异议请与网页底部的电邮联系)
c语言中指针变量可以相加吗?其含义是什么?~

指针变量是有加减运算的,但是要注意以下几点:

1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址。指针变量可以加减,但是只能与整型数据加减,此时加减的含义并不是其地址值进行了加减,也就是说如果指针变量p的值是0x20000000,那么p=p+2;的值并不是0x20000002,并不是地址值的简单相加,那么地址值加减多少是与指针指向的数据类型相关联的,如果在32位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后,p的地址值变成0x20000008,也就说实际上地址值加了多少呢:sizeof(int)*2这么多。说明白点,我们加减的数字是以指针指向的数据类型为量度的,P+2表示p在内存中前移两个int的距离,如果p不是int类型,而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理。

2.指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),例如对于int类型的指针p和p1. p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。 指针变量的自加和自减实际上是与整数1的加减运算。

3.指针之间可以比较大小。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义。指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。

不一定是整形 具体情况具体分析

间接引用操作符*和前缀递变(++和--)操作符的优先级是相同的,但是后缀递变操作符的优先级是高于间接引用操作符的,所以:

*p++相当于*(p++)

结合性是用于确定同一优先级操作符的运算顺序的,比如:

*++p

由于*和前缀++的优先级相同,而且结合性是从右向左的,所以在计算时先算右边的,即它相当于*(++p);

同一运算级怎么会从右向左...*P++即(*P)++
是指针先指向*P这个值,再++
也就是*P的值+1,然后再赋给*P

即指向该指针所指的下一个变量,并把值赋给该指针。


c语言中* p=& a的表示方法是错误的?
如下:1、一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。2、*p=a的意思:将a的值赋给p指针指向的地址的值。3、p=&a的意思是:将a的地址赋给指针p。4、区别:*p是一个值;p是一个地址;两者完全不相同。介绍 指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分...

c语言中*p=a与*p=&a有什么区别?
int a=2,*p; *p=&a; 打印*P应该是一个地址值,很长一串, p=&a; 打*P印结果会是2;对于指针来说,*p = a[0],表示向地址为p的内存区域赋值为a[0]。p = a[0],把变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。

c语言指针*p中p++什么意思
p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。p:一级指针,表示p所指向的地址里面存放的是一个类型的值。

c语言中*P=&S与*P=S有区别吗?
当然有区别了。 *是取值,后面要跟地址(指针),&是取地址,后面要跟变量名。p=&s 表明s是个变量名,而p是个指针(指针变量)p=s 表明s是个地址(指针变量、数组名等),而p是个指针(指针变量)

C语言中*p++该该怎么理解,*和++是同一运算级,从右向左啊,是不是p中...
间接引用操作符*和前缀递变(++和--)操作符的优先级是相同的,但是后缀递变操作符的优先级是高于间接引用操作符的,所以:p++相当于*(p++)结合性是用于确定同一优先级操作符的运算顺序的,比如:++p 由于*和前缀++的优先级相同,而且结合性是从右向左的,所以在计算时先算右边的,即它相当于*(++p);...

C语言 int a,*p;*p=a;这个语句对吗?
楼主 一定要 区分 声明、定义、初始化 三者之间的区别哦 int a, *p;这个叫声明,表示a是一个int类型,p是一个指向int类型的指针 还没有定义哦 p=a,这个叫赋值语句,但是右边的 a只是一个声明,而没有定义,因此是没有用的,这个用法是错误的 TC支持,那是因为 编译器对 标准C规则进行了扩展...

c语言中输出时用P还是*p的问题
“字符串”,即%s所要求的类型是字符指针,即串开始的地址,串首字符的地址;而%d要求的类型是整数,不是整数指针,而是整数指针所指的内容,所以要用

C语言指针**p是什么意思
p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值!例如:int i=10; \/\/定义了一个整型变量 int *p=&i; \/\/定义了一个指针指向这个变量 int **p1=&p; \/\/定义了一个二级指针指向p指针...

c语言指针问题,输入函数中*p和p的区别
用scanf("%d",&a)是将数存入一个空间地址,而pa已经是一个地址,所以可以直接写出scanf( "%d%d", pa, pb);

C语言-这里的(*p)()是什么?
是指针

永年县19726631188: C语言中*p++该该怎么理解,*和++是同一运算级,从右向左啊,是不是p中的地址自加后再指向另一个变量?
栋质丁那: 间接引用操作符*和前缀递变(++和--)操作符的优先级是相同的,但是后缀递变操作符的优先级是高于间接引用操作符的,所以: *p++相当于*(p++) 结合性是用于确定同一优先级操作符的运算顺序的,比如: *++p 由于*和前缀++的优先级相同,而且结合性是从右向左的,所以在计算时先算右边的,即它相当于*(++p);

永年县19726631188: c语言*p++是什么意思?
栋质丁那: *p++就是先取出指针p指向的地址单元的数据,之后再将该值加1.由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据.若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据.在c语言中 ++的优先级大...

永年县19726631188: C语言中 *(p++) p++ *p++ ++*p (*p)++ 分别是什么意思 -
栋质丁那: *(p++):取出指针p所指地址中的数据,指针+1p++ : 指针+1 *p++ : 等同于 *(p++) ++*p : 指针所指地址中的数据+1 (*p)++ : 取地址数据,地址中的数据+1 ********************************************************tip1. * 与 ++的优先级相同的,它...

永年县19726631188: C语言*p++是什么意思? -
栋质丁那: 在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但并不像bkldhldbk所说"*p++就是:p自身加1后取该指针所指的值" .

永年县19726631188: C语言中优先级和结合性 例如:*p++ -
栋质丁那: *p++,由于++和*的优先级相同,结合方向为自右至左.所以确实*p++等价于*(p++),而p++其实取值的时候还是取p的,是用过之后才能+1.所以*(p++)就是先执行p++得到p,然后执行*p,得到p指向的值,等这个运算结束了才能+1.你的那个理解应该是对于*(++p)的!

永年县19726631188: c语言中*++p与++*p有什么区别 -
栋质丁那: 区别: 1、*p++与*(p++)是等价的,表示取p所指单元的值,p指向下一单元,即p自加1. 2、*p++是指下一个地址. 3、(*p)++是指将*p所指的数据的值加一. C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只...

永年县19726631188: c语言指针*p中p++什么意思 -
栋质丁那: **p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针. *p:一级指针,表示p所指向的地址里面存放的是一个类型的值. 扩展资料: 指针变量可以进行加减运算,例如p++、p+i、p-=i.指针变量的加减运算并不是简单的加上...

永年县19726631188: c语言中(*p)++和*p++含义应该不同吧? -
栋质丁那: (*p)++ : 表示指针p所指的存储空间的值自加一次. *p++ : 由于++的优先级高于*,所以先执行++,相当于*(p++); 例: 如有定义: int a[5]={10,20,30,40,50}; int *p=a,b;如写成:b=*p++; 则b的值为10,p自加一次由a[0]的地址指向a[1]的地址(就是值为20的变量地址),其它不变.如写成:b=(*p)++; 则b的值为10,p所指向的地址中的值自加一次(相当于a[0]自加一次),a[0]的值就会变成11.

永年县19726631188: 谁可以帮我解释下(*p)++和*p++的含义谢谢! -
栋质丁那: 比如p=(3,2) (*p)++就是吧p指针指向的值++就变成(4,2) *p++是吧p++后取值 这样取出的是2 改变了p的值但目标内存的数据不变还是(3,2)只不过此后p都指向2这里了

永年县19726631188: 关于C语言指针变量*p++ 、*(p++)、(*p)++的区别 -
栋质丁那: *p++ 由于++和*同优级,是自右向左的结合方向*(p++),因此等价于*(p++);他们的作用是得到P指向的变量值(*P),然后P +1=》P (*q)++,是先取P指向的变量值,然后其值再加一;

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