我是靠谱客的博主 温婉黑猫,最近开发中收集的这篇文章主要介绍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)++)一、在此说明 按照书上的说法++ (后置) >++(前置) >* 解引用用 > = 等于二、实列代码演示所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部