我是靠谱客的博主 温婉黑猫,最近开发中收集的这篇文章主要介绍C语言中 ++和 *的优先级以及他们的应用实例(*p++、*++p、++*p、(*p)++)一、在此说明 按照书上的说法++ (后置) >++(前置) >* 解引用用 > = 等于二、实列代码演示,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一、在此说明 按照书上的说法++ (后置) >++(前置) >* 解引用用 > = 等于
所以说明++的优先级是高于*指针
二、实列代码演示
#include<stdio.h>
int main()
{
//在此说明 按照书上的说法++ (后置) >++(前置) >* 解引用用 > = 等于,但是
//c = ++*p为什么先算的 *p 后算的++ 可以看最后我给的网址
char buf[] = "acegfd";
char a,b,c,d;
// printf("a=%d--b=%d--c=%d--d=%dn", &a, &b, &c, &d);//打印asdasf
char* p = buf;
printf("p的原地址 = %dn", p); //打印11533088--a 说明一下:指针的地址是随时改变的。
a = *p++; //a=*(p++)
printf("p-a的地址 = %dn", p); //打印 11533089--c
printf("a = %cn", a);//打印a
b = *++p; //b=*(++p)
printf("p-b的地址 = %dn", p); //打印11533090--e
printf("b = %cn", b); //打印e
c = ++*p; //c=++(*p)
printf("p-c的地址 = %dn", p); //打印11533090--e
printf("c = %cn", c); //打印f
d = (*p)++; //d=(*p)++
printf("p-d的地址 = %dn", p); //打印11533090--e
printf("d = %cn", d); //打印f
return 0;
}
结果展示
解释:
a=*(p++) a过后 p的地址+1 故p的地址为11533089 —c, 但由于p++是先运行后自加故 a = a .并没有去指向p现有的地址,而是指向了P的原有地址。
b=*(++p) b过后p的地址+1 故p的地址为11533090----e, 故b就指向p的值-e
c=++(*p) c过后 p的地址没变 故p的地址为11533090 —e, 但由于(*p)=e,++自增了1,故c=e+1=f.
d = (*p)++; d过后 p的地址没变 故p的地址为11533090
—e,因为()的优先级最高,故(*p)=e,但是由于++,所以d=f;
如果对其中还有不懂得,可以看下这个网址所讲得。链接如下
点赞、收藏
最后
以上就是温婉黑猫为你收集整理的C语言中 ++和 *的优先级以及他们的应用实例(*p++、*++p、++*p、(*p)++)一、在此说明 按照书上的说法++ (后置) >++(前置) >* 解引用用 > = 等于二、实列代码演示的全部内容,希望文章能够帮你解决C语言中 ++和 *的优先级以及他们的应用实例(*p++、*++p、++*p、(*p)++)一、在此说明 按照书上的说法++ (后置) >++(前置) >* 解引用用 > = 等于二、实列代码演示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复