1

我有以下代码:

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);
4

1 回答 1

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); 
于 2013-10-30T20:56:50.453 回答