增加函数参数中的指针

时间:2013-10-30 20:53:21

标签: c pointers lvalue

我有以下代码:

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

1 个答案:

答案 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);