*p++和(*p)++的区别有什么用意思
区别:
1、*p 示取p所指单元的值,p指向下一单元,即p自加1。*p 是指下一个地址。
2、(*p) 是指将*p所指的数据的值加一。
C编译器认为*和 是同优先级操作符,且都是从右至左结合的,所以*p 中的 只作用在p上,和*(p )意思一样;在(*p) 中,由于()的优先级比*和 都高,所以 作用在()内的表达式*p上。
比如有:
int x,y,a[]={1,2,3,4,5},*p=a,*q=a;
x=*p ;//执行这一句后x=a[0]=1,p=a 1
y=(*q) ;//执行这一句后,y=a[0] 1=2,q仍然=a
扩展资料:
验证程序1
#include"stdio.h"
void main()
{
int a=2;
int*p=&a;
int*pold;//记录P指向的地址,为了作为比较使用
pold=p;
//-----------原来的信息
printf("原来的a=%d",a);
printf("原来的p=%x",p);
printf("原来的pold=%x",pold);
//----------进行变化
printf("*p 的结果=%d,a的结果a=%d",*p ,a);
printf("地址变化的结果p-pold=%x",p-pold);
}
程序2
#include"stdio.h"
void main()
{
int a=2,*p=&a,*q=&a;
printf("%d%d",(*p),a);
printf("%d%d%d%d",(*p) ,*p ,*q ,a);
printf("%d",a);
}
程序3:
#include"stdio.h"
void main()
{
int a=2,*p=&a,*q=&a;
printf("%d%d",(*p),a);
printf("%d%d%d",*p ,(*p) ,*q );
p=&a;q=&a;
printf("%d%d%d%d",a,*p,(*q) ,a);
printf("%d%d%d%d",a, (*p), (*q),a);
printf("%d",a);
}
综上所述:
*p 是先取出*p的值,然后让p
(*p) 是先取出*p的值,让这个值
*(P )是先取出*p的值,让p
所以,*p 等价于*(P )
而且printf的运行顺序是从右向左运行。而且右 是在整个运算表达式运算完才进行,而且右 的执行顺序是从左到右进行。而左 遇到变量就会立即增加变量的值。
验证printf的运算顺序
#include"stdio.h"
void main()
{
int a=2;
printf("a =%d, a=%d,a =%d",a , a,a );
printf("a=%d",a);
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanfcecf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01