C语言中 *(p++) 与 *p++ 与 *(--p) ;以及 i++%5= =0 和++i%5= =0的区别?请教知道的大虾们,不甚感激、、

解释他们各是什么意思??

一个数组 int num[5]
一个数组指针 int *p
p = num //指针指向 num首地址 也就是 *p=num[0];

*(p++)的意思就是 我先求地址加1 再指向那个地址 所以 *(p++) 的值就等于 num[1]了
*p++ 的意思 就是说 (*p)++就是他的值加1 相当于 num[0]++

假设i的初值为10
i++%5 == 0 意思 先用i去做运算, i 再做自加1的运算
所以结果就是 10%5==0 i=i+1;

++i 就是先进行 i的运算 再做其他运算 那么就是i = i+1 ,也就是11
11%5==0的意思追问

*和++ 哪个优先级高?? 还有假如 i=11, 11%5 ==0 为假 ,此时还进行i=i+1运算吗??

追答

*的优先级高 这个可以百度一下符号优先级
还进行运算 我只是这么比喻 i最后会等于12 的
可以拿编译器 试试
实践才能加深记忆

失误 他们是同等优先级 按从左到右的 顺序

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-31
*(p++) p的地址+1 然后取值
*p++ p指向的地址的值+1
*(--p) p指向的地址 然后p的地址-1
i++%5 == 0 执行 i= i+1判断i+1后的值是否能够整除5
++i%5= =0 判断i的值是否能够整除5,然后i=i+1

...p) ;以及 i++%5= =0 和++i%5= =0的区别?请教知道的大虾们,不甚感激...
(p++) 与 *p++ 一样。都是*p的值。 然后p=p+1;(--p) 先自减,p=p-1; 然后再取值。i++%5= =0 先判断 然后i自加。++i%5= =0先自加,然后再判断。

c语言 *(p++)和*p++含义一样不
(p++):是将先p所指向内存地址值A移动一个存储单元(如果p是int型就移动4个字节,char型就移动1个字节,……)得到另一个地址值B,再取移动后的地址值B所存放的数据;p++:是先取出p指向内存地址值A存放的数据,再把这个数据加一。

C语言中*p++和*(p++)有什么不同 ?
区别:1、*p++与*(p++)是等价的,表示取p所指单元的值,p指向下一单元,即p自加1。2、*p++是指下一个地址。3、(*p)++是指将*p所指的数据的值加一。C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样;在(*p)++中,由于()...

C语言中定义int *p;那么*(p++)和*p++有区别吗?
没区别。因为* ++ 都是单目运算符,都是自右至左结合的。所以*p++是先p++ P指向的地址照类型大小加1, 再取*p值。 *(p++)就不说了,一样。

关于C语言指针变量*p++ 、*(p++)、(*p)++的区别
c语言的指针,里面存放的是 物理地址。而*p 是 取内容的意思,即 取当前存放内容对应(指向)的地址 里面的内容。而p++ 就是把 p里面的内容+1个单位,因为 p存的是地址,所以是 地址+1,也就是下一个地址。那么指针p 就指向了 下一个地址了。

*p++和*(p++)的区别
p++和*(p++)的区别是运算顺序不同。p++由于*和++优先级同级,满足右结合性,从右至左。p先取值,因为此时语句还没执行完,p未被赋值,故*p++所取的值为a[0],*p++等同于*(p++)。(p++),是先对指针P进行++运算,然后再取取值,由于*和++的运算优先级一样,且是右结合。故*p++相当于...

*p++与*(p++)有什么区别
没有什么区别,本来++的优先级就比*高,*p++就表示 *(p++);这个就相当于 *p;p++;两句的综合,先使用p指向的地址上存储的值,然后p指向下一个地址。

c语言中*(p++)怎么还是取p的内容呢?括号里面先算在c语言中还成立吗?C...
因为是右结合性的运算符,所以p先和++结合,然后再计算*,所以*p++也就等同于*(p++)。这个算式的计算过程:先算括号里的p++,即先返回p的值,然后p自加,与*结合的是括号中返回的值,即p,所以得到p当前指向的值,所以该表达式最后的值应该是p当前指向的值,...

*p++与*(p++)有什么区别吗
没有区别,这个问题涉及到运算符的优先级 其中++运算符的优先级高于*取值运算符,所以无论加不加括号都是一个效果 先地址自增1,然后再*取值

*(p++)和*p++的区别
(p++)是P指针的地址加1后取这个地址的值;p++则是先取P指针的值,然后把这个值加1;

相似回答