我有以下代码:
int x;
int * xPtr = &x;
int * Get_xPtr(void);
void someFunction(int * y);
int * Get_xPtr(void)
{
return xPtr;
}
void someFunction(int * y)
{
...
...
}
void main(void)
{
someFunction(++Get_xPtr());
}
这段代码编译正常,没有函数Get_xPtr()的返回值(地址)的增量,但是增加了我得到的错误:
“错误:左值作为递增操作数”
我想这是不允许的语法,但为什么呢?有没有其他方法可以做到这一点,或者我需要:
int * tempPtr = GetxPtr();
tempPtr++;
someFunction(tempPtr);
答案 0 :(得分:2)
someFunction(++Get_xPtr());
++Get_xptr()
需要左值来存储返回值。
简单的例子将做一些澄清
int i=0;
++i; ==>i=i+1; //result stored in i.
变量我可以改变
++5; //where is lvalue ?
您可以使用
someFunction(Get_xPtr()+1);