c语言*p++是什么意思?

主要是优先级的问题。... 主要是优先级的问题。 展开
 我来答
百度网友c330b2d
推荐于2019-10-23 · TA获得超过448个赞
知道答主
回答量:29
采纳率:0%
帮助的人:8.7万
展开全部

*p++是指下一个地址。

++和*的优先级是一样的,不过它们计算时都是从右向左算的。

扩展资料

C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。

优先级等级口诀

  • 圆方括号、箭头一句号, 自增自减非反负、针强地址长度,

  • 乘除,加减,再移位,

  • 小等大等、等等不等,

  • 八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。

  • 其中“,”号为一个等级分段。

参考资料:百度百科-C语言运算符

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
二锅头就是二sa
推荐于2019-11-01 · TA获得超过1.3万个赞
知道答主
回答量:54
采纳率:0%
帮助的人:4.5万
展开全部

*P++ :*和++都是同级运算符,右结合。但++要整个表达式运算完了才运算,先提取P指向对象的值,然后P再做++运算,指向下一个对象。*p++的意思就是先取出指针p指向的地址单元的数据,之后再将该值加1。

下面具体区分

1、*p++:只将p加1

2、++p or p++:将p加1

3、++*p:将*p所指单元加1

4、++*p++:将p加1,同时也将*p所指单元加1

扩展资料

*p++先执行++再执行*,分三步

(1)先执行p++,因为是后置,先用p

(2)再执行*p,取p所指的内容

(3)最后再让p++,让p的地址加一个单位

具体的看代码

#include<iostream>

using namespace std;

void main(){

int a[5] = { 2, 4, 5, 8, 9 };

int *p;

p = a;

cout << "p的值为" << p<<endl;

int i=*p++;

cout << i << endl;

cout << "*p++后的p的值为" << p <<endl<< "*p的内容为" << *p;

}

参考资料 百度百科——优先级

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小肥肥2
高粉答主

推荐于2019-11-18 · 醉心答题,欢迎关注
知道答主
回答量:50
采纳率:100%
帮助的人:1万
展开全部

*p++就是先取出指针p指向的地址单元的数据,之后再将该值加1。

由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。

若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据。

在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但并不像bkldhldbk所说"*p++就是:p自身加1后取该指针所指的值" 。

扩展资料:

c语言的优先级的几个情况

优先级反转

由于具有降低优先级的任务长时间占用共享资源,造成申请该资源的优先级最高的进程始终处于等待状态,此时其他比占用资源优先级高但比等待资源进程优先级低的进程将获得处理器的使用权,并先于优先级最高的处于等待状态的进程先结束。

发生的防止

ucos中可以利用互斥型信号量解决上述问题。互斥型信号量创建函数申请一个比使用某共享资源的所有进程中比最高优先级更高的优先级作为预留。

当某个进程调用pend函数申请使用该共享资源,同时该资源已经被占用时,pend函数会判断是否需要提升占用该资源进程的优先级,以使其尽快释放所占用的资源,从而防止优先级反转的发生。

优先级等级

任务的优先级等级与相对截止期、空闲时间之间的层次关系可以用一种线性关系来描述,如:

di+ksj=g

其中,k为线性关系的斜率,g 可以看成是优先级等级。对于确定的斜率k,g 越小,优先级等级越高。比如,对于g1<g2,满足di+ksj=g1的任务优先级要高于满足di+ksj=g2的任务优先级。

参考资料来源:百度百科--C语言

参考资料来源:百度百科--优先级

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大野瘦子
高粉答主

推荐于2019-11-06 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.5万
展开全部

*p++的意思就是先取出指针p指向的地址单元的数据,之后再将该值加1。

由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。具体如下:

1、取数组当前位置的值*p;

2、然后,p指向下一位置的数据。

扩展资料:

*p++的使用

*p++等价于:先处理*p,然后在执行p++;举个列子(伪代码)

a[5]={1,2,3,4,5}  ;

*p=a ;

for(5)printf *p++;

输出是 1 2 3 4 5,且最后p指向&a【4】+sizeof(元素类型);

*++p等价于:先执行++p,在处理*p;同样举个列子(伪代码)

a[5]={1,2,3,4,5}  ;

*p=a ;

for(4)printf *++p;

输出是 2 3 4 5,且最后p指向&a【4】(注意for循环只执行4次)

注:*p(++)语法不对,编译器会报错

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
123饭后娱乐
推荐于2019-11-05 · TA获得超过4133个赞
知道答主
回答量:5
采纳率:100%
帮助的人:680
展开全部

*P++ :*和++都是同级运算符,右结合。但++要整个表达式运算完了才运算,先提取P指向对象的值,然后P再做++运算,指向下一个对象。

C语言的特点之一是代码可以写的很精炼。

*p++解析:++先跟p结合,但是因为++后置的时候,本身含义就是先运算后增加1(运算指的是p++整体与前面的*进行运算;增加1指的是p+1),所以实际上*p++符号整体对外表现的值是*p的值,运算完成后p再加1.
所以*p++等同于:*p; p += 1;

举例(伪代码):

a[5]={1,2,3,4,5}  ;

*p=a ;

for(5)printf *p++;

输出是 1 2 3 4 5,且最后p指向&a【4】+sizeof(元素类型);

扩展资料:

*++p的使用:

*++p等价于:先执行++p,在处理*p;同样举个列子(伪代码)

a[5]={1,2,3,4,5}  ;

*p=a ;

for(4)printf *++p;

输出是 2 3 4 5,且最后p指向&a【4】(注意for循环只执行4次)

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

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式