C++的优先级:先->再++

本文分析了C++中结构体数组`sa`和指针`ptr`的使用,重点讲解了选项D中`++ptr->i1`为何输出3,同时涵盖了指针运算符的陷阱和动态数组的内存理解。通过实例演示了如何正确处理结构体中成员的递增操作。
摘要由CSDN通过智能技术生成

1.若有以下说明语句和定义语句,则下面表达式中值为3的是

#include<iostream>
using namespace std;

int main() {
	
	struct s {
		int i1;
		struct s *i2;
	};

	static struct s a[3] = { 1,&a[1],2,&a[2],3,&a[0] };
	static struct s *ptr;
	ptr = &a[1];

	//选项A
	//cout << ptr->i1++ << endl;//2
	//选项B
	//cout << ptr++->i1 << endl;//2
	//选项C
	//cout << *ptr->i1 << endl;//报错,*的操作数必须是指针
	//选项D
	cout << ++ptr->i1 << endl;//3,先->再++
	return 0;
}

 2.输出值为6的是

int main() {

	struct st {
		int n;
		struct st *next;
	};
	static  st a[3] = { 5,&a[1],7,&a[2],9,NULL }, *p;
	p = &a[0];
	//选项A  先->再++ 
	//cout << p++->n << endl;//5
	//cout<<p->n<<endl;//7
	//选项B  先->再++ 
	//cout << p->n++ << endl;//5
	//cout<<p->n<<endl;//6
	//选项C 
	//cout << (*p).n++ << endl;//5
	//cout<<p->n<<endl;//6
	//选项D
	//cout << (++p)->n << endl;//7
	//cout << ++(p->n) << endl;//6,
	cout << ++p->n << endl;//6,->优先级高于++	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Catherinemin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值