C++指针相关代码报错原因及报错行咨询
代码错误解析
触发错误的行
编译错误主要由第二行触发:int *p = a++;,同时第一行int a[]={1,2,3,4}末尾缺少分号也属于语法错误。
错误原因
- 数组名不可被修改:在C++里,数组名
a是指向数组首元素的常量指针(属于不可修改的左值),而自增运算符++的本质是对操作数执行「取值-加1-赋值」的操作,它要求操作数必须是可修改的左值。数组名不满足这个要求,因此a++是非法操作。 - 第一行的语法疏漏:语句末尾未加分号,编译器无法正确识别语句边界,会触发语法错误。
修正示例
如果想要让指针指向数组的第二个元素,可以修改为:
int a[]={1,2,3,4}; int *p = a + 1; cout<<*p<<endl;
内容的提问来源于stack exchange,提问作者Shubham
相关产品推荐
相关产品推荐

