c++中cin>>str+1什么意思

有时看c++代码,会有这样的情况

char a[10];
cin >> a + 1;

那么这个cin>>a+1是什么意思呢,查了一下资料,发现Stack Overflow上一位老哥解释得比较清楚
在这里插入图片描述
什么意思呢,也就是说这是一个指针运算,a表示的是指针char*,由于>>操作优先级低于+,所以先进行+1运算,a+1表示的是&a[1]这个地址,所以说cin>>a+1也就是从地址&a[1]处开始写输入,相当于舍弃了a[0]这个值
我们验证一下这个想法:

#include<iostream>
using namespace std;

int main() {
    
    
	char a[10];
	cin >> a + 1; //等价于scanf("%s", a+1);
	printf("%s", a);//从a[0]开始打印,显示乱码
	puts("");
	printf("%s", a + 1);//从a[1]开始打印
	return 0;
}

在这里插入图片描述
果然a[0]处乱码,由于从a[1]开始写,于是只有a[1], a[2], a[3]保存着我们输入的有意义的字符。

猜你喜欢

转载自blog.csdn.net/weixin_45577864/article/details/123451909