指针与++

本文详细解析了C语言中指针与++操作符的结合使用,通过示例说明了不同组合下操作符的优先级和执行顺序,包括b=*p++, b=(*p)++, b=*++p和b=++*p四种情况,阐述了它们对指针和所指变量的影响。" 122442413,11455330,Ubuntu18.04安装OpenCV3.3.0全攻略,"['opencv', '计算机视觉', 'Ubuntu', '软件安装', 'CUDA']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“++”和“--”两个运算符都属于算术运算符。++和--又有前缀、后缀的区别,++a的++属于前缀,a++的++属于后缀,后缀++是Postfix   operator,结合顺序为从右向左;前缀++是Prefix   operator,结合顺序为从左向右。后缀的优先级高于前缀的优先级。

char a[]={10,20};

char *p,b;

p=&a[0];//将数组a[0]的地址赋给p

 

b=*p++,其中++属于后缀,所以优先级高于*,相当于b= (*(p++)),也就是说++操作于p上,可以分解为b=*p;p++;总的作用就是b=10 ,p指向地址2001;a[0]和a[1]不变。

b=(*p)++,强制改变优先级,先进行(*p)运算,其结果为p引用的对象,可以分解为b=(*p);(*p)++;总的作用就是b=10,a[0]=11,p指向地址2000;

b=*++p,相当于b=(*(++p)),也就是说++操作于p上,结果为p加1后的值,再作*运算,可以分解为++p;b=*()。总的作用就是p指向地址2001,b=20,a[0]和a[1]不变。 

b=++*p,相当于b=(++(*p)) ,也就是说先对p作*运算,其结果为p引用的对象,再++把这个对象+1,总的作用就是a[0]=11,b=11,p指向2000;

 

 

#include 

#include 

void main()

{

    char s[]="abcdef",*c=s;

    printf("原数组%s\n",c);    //abcdef

    c+=3;

    printf("c+3后指向%c\n",*c);     //d

*(c--)=*(c-1);              //将c-1的值赋给c,然后c--指向原先c-1的位置

printf("赋值后c指向%c\n",*c);       //第一个c

    printf("运算后c后数组%s",c);     //ccef

    printf("运算后整个数组%s",s);     //abccef

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值