*p++、(*p)++、*(p++)

news/2024/11/27 8:46:00/

运行程序测验一下:

*p++与*(p++)

#include<iostream>
using namespace std;
int main()
{//测试*p++int a[5] = {1,100,200,300};int *p=a; *p++= 10;cout << "*p: " << *p << endl;;cout<<"a[0]:"<<a[0]<<endl; cout <<"a[1]:" << a[1] << endl;cout<< endl;//测试*(p++)int b[5] = {1,100,200,300 };int *q = b;*(q++) = 10;cout << "*q: " << *q << endl;;cout << "b[0]:" << b[0] << endl;cout << "b[1]:" << b[1] << endl;system("pause");return 0;
}

总结:*p++和*(p++)没有区别,查阅资料得到正确的理解,应该理解为,由于后++优先级高于*,应该先p++,后取值,但因为是后++,所以先执行*p,然后等赋值完成以后,p再++。

*p++与(*p)++

#include<iostream>
using namespace std;
int main()
{//测试(*p)++int a[5] = {1,100,200,300};int *p=a; (*p)++;cout << "*p: " << *p << endl;;cout<<"a[0]:"<<a[0]<<endl; cout <<"a[1]:" << a[1] << endl;cout<< endl;//测试*p++int b[5] = {1,100,200,300 };int *q = b;*q++;cout << "*q: " << *q << endl;;cout << "b[0]:" << b[0] << endl;cout << "b[1]:" << b[1] << endl;system("pause");return 0;
}


总结:(*p)++,先取*p,再使*p这个值加1,p指针并没有移动

            *p++, 按照上面的理解,最后结果应是先执行*p,但这里并没有输出句子什么的,所以取了之后无法看出来,然后又执行了指针p的移动。


(*p)++=2此式子是错误的,因为(*p)++其实是个右值,而*p++和*(p++)是左值。所以*p++=2和*(p++)才不会出错 

参考这两个例题:

例1

#include<stdio.h>
int main()
{int*p = NULL;int a[]={1,2,3,4}p
=a;*(p++) + = 100;printf(%d%d%d%d%d\n”,*p,a[0],a[1],a[2],a[3]);return 0;
}

答案为:2 101 2 3 4

例2

函数作用:将整型数组p中n个数据增大
void increment_ints (int p [ ], int n)
{assert(p != NULL);  /* 确保p不为空指针 */assert(n >= 0);  /* 确保n不为负数 */while (n)  /* 循环n次. */{(*p)++;//不能用*p++, /* 增大p*/p++, n--;      /* p指向下一位,n减1 */}
}


http://www.ppmy.cn/news/173669.html

相关文章

韩国渠道接入三星支付(Android 接入 Samsung in app purchase)

Android 接入 Samsung In-App Purchase 在三星后台注册应用获取Samsung IAP-Helper SDK三星支付SDK集成总结&#xff1a; 在三星后台注册应用 注册开发者账号 在后台添加应用 同时将添加了三星支付权限的apk包上传至后台&#xff0c;以注册商品信息 获取Samsung IAP-Helper SDK…

苹果、三星、华为的2019财报三国杀

8月7日&#xff0c;IDC刊出了2019年Q2全球智能手机出货量的初步数据&#xff0c;从市场份额来看&#xff0c;一方面&#xff0c;三星延续7年之久的冠军地位依旧不变&#xff1b;另一方面&#xff0c;和一季度一样&#xff0c;华为第二季度再次抢过了苹果全球第二的宝座。 在20…

*p++与(*p)++与*(p++)

这个问题其实是论述*P等价于&#xff08;*p&#xff09;还是等价于*&#xff08;p&#xff09;的问题&#xff0c;为了验证这个问题&#xff0c;我编写了下面的小程序&#xff08;vc6.0编译环境&#xff09;&#xff0c;作为验证 程序1 #include "stdio.h" void main…

韩国三星GALAX SIII发布有感

5月4日3点12分&#xff0c;看完韩国三星公司新款智能手机发布会&#xff0c;有感。 这款智能手机的系统配置如下&#xff1a; SamsungI9300 Galaxy S III at a glance: General:GSM 850/900/1800/1900 MHz, UMTS 850/900/1900/2100 MHz, HSDPA 21Mbps, HSUPA 5.76 Mbps; 4G (r…

三星固态硬盘PRO 和 EVO的区别

三星固态硬盘PRO和EVO简单来说定位有所区别&#xff0c;PRO定位高端旗舰型号&#xff0c;EVO定位亲民大众型号。我从官方客服得到答案是&#xff0c;EVO用的是闪存颗粒是Samsung V-NAND 3bit MLC&#xff0c;PRO用的闪存颗粒是Samsung V-NAND 2bit MLC&#xff0c;而实际Samsun…

关于++p和p++

p&#xff1a;先引用后增加&#xff0c;先在p所在的表达式中使用p的当前值&#xff0c;后让p加1. p&#xff1a;先增加后引用&#xff0c;让p先加1&#xff0c;然后在i所在的表达式中使用i的新值. 一般变量 比如 a是先输出再&#xff0c;故先输出1&#xff0c;然后输出2&…

850pro测试软件,三星850Pro ssd可靠性测试 6000次P/E

泡泡网SSD固态硬盘频道7月8日 三星前不久发布了850 Pro固态硬盘,性能提升并不明显,但是850 Pro它使用的是三星第二代的V-NAND闪存。测试显示其P/E循环寿命达到了6000次,大约是目前NAND的2倍,但没有达到三星官方所说的10倍可靠性。 三星前不久发布了新一代的850 Pro固态硬盘…

美版三星s7 g930 p版刷官方国际版安卓8以及手机卡信号和关闭DM服务相关问题

看了很久没有美版单卡g930p的详细刷机教程&#xff0c;就随手出了一篇。首先说一下&#xff0c;机子是两三年前的机子了&#xff0c;反正好久了具体多久也记不清了&#xff0c;刚买来的时候是还在出note7&#xff0c;因为是水货美版&#xff0c;所以没办法跟国行的刷新走&#…