c语言 ++和*运算符优先级

/*
*左++ > * > 右++
*比如 ++ *i 相当于  ++ (*i) ,指针i对应的变量+1。
*实验如下
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
    int a[5];
    int *ptr = a;
    int i;

    for(i = 0; i < 5; i++)
    {
        *(ptr + i) = i;
    }

    for(i = 0; i < 5; i++)
        printf("%d addr %p\n", a[i],(ptr + i));

    printf("\n");
    printf("ptr is %p\n", ptr);
    printf("*ptr++ %d\n", *ptr++);
    printf("ptr is %p\n", ptr);

    printf("(*ptr)++ %d\n", (*ptr)++);
    printf("ptr is %p\n", ptr);

    printf("*ptr %d\n", *ptr);
    printf("ptr is %p\n", ptr);

    printf("*++ptr %d\n", *++ptr);
    printf("ptr is %p\n", ptr);

    printf("++*ptr %d\n", ++*ptr);
    printf("ptr is %p\n", ptr);

    printf("\n[");
    for(i = 0; i < 5; i++)
        printf("%d ", a[i]);
    printf("]\n");
    

    return 0;
}

root@opcv-VirtualBox:/home/opcv/test_module/test_csafe# ./ptr 
0 addr 0x7ffdc91584d0
1 addr 0x7ffdc91584d4
2 addr 0x7ffdc91584d8
3 addr 0x7ffdc91584dc
4 addr 0x7ffdc91584e0

ptr is 0x7ffdc91584d0
*ptr++ 0----------------------》打印0 ,然后改变指针地址
ptr is 0x7ffdc91584d4
(*ptr)++ 1--------------------》打印1,然后ptr指的内容+1
ptr is 0x7ffdc91584d4
*ptr 2-------------------------》打印2
ptr is 0x7ffdc91584d4
*++ptr 2----------------------》打印2,先运算++ptr,然后在取值
ptr is 0x7ffdc91584d8
++*ptr 3-------》打印3,先取内容,然后内容在++
ptr is 0x7ffdc91584d8

[0 2 3 3 4 ]

 

 

实验二 *ptr++

#include <stdio.h>

int main(void)
{

    int a = 10;

    int *ptr = &a;

    printf("ptr %p *ptr %d \n", ptr, *ptr);
    *ptr++;
    printf("ptr %p *ptr %d \n", ptr, *ptr);

    return 0;
}

实验结果:
root@opcv-VirtualBox:/home/opcv/test_module/test_csafe# ./ptr_1
ptr 0x7ffc8752002c *ptr 10 
ptr 0x7ffc87520030 *ptr -2024669136 -------------ptr++(指针++)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值