论++*p,*p++,*++p之间的区别

1.C语言中前置++i和后置i++的区别

  • 在for循环语句中前置++是用i加后的值与条件比较,这个过程中 不需要开辟临时空间;
  • 而后置++则是先将i取出来放在一个临时开辟的空间里 ,用这个临时量与条件做比较,然后i自增;
  • 前置++比后置++效率高,因为不必开辟临时空间。 

2.++*p,*p++,*++p的区别
清楚了前置++和后置++的区别无疑对我们要解决的这个问题至关重要,接下来通过一段代码来体会一下三者的区别
       
             #include<stdio.h>
              int main()
            {
                   int a[10] = {21,23,45,32,66,34,12,56,90,33};
                   int *p = &a[2];
                   int x = ++*p;
                   int y = *p++;
                   int z = *++p;
                   printf("%d,%d,%d\n",x,y,z);
                   return 0;
            }

       程序运行后的结果为: 46,46,66
  
说明:由于自增运算符与指针运算符优先级相同,c语言中规定它们的结合方向是从右向左,则
          (1)++*p则是指针运算符与p先结合,*p指向a[2]这个地址空间,a[2]里面的值是45,则++*p实质是++a[2],所以结果为46;
          (2)*p++是把p所指a[2]的地址先取出来放在一个临时空间,然后用取出来的临时量与*结合,则结果为46。此时p指向下一个地址空间,也就是a[3]的地                       址;
          (3)*++p则是先执行自增,由于p里面已经存放的是存放a[3]的地址,++p则指向存放a[4]元素的地址,所以*++p的结果为66
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值