6

我陷入以下指针问题:

假设您有一个功能:

void Function (unsigned char *ubPointer)
{
    ubPointer++;
}

int main (void)
{
    unsigned char *PointerX;

    Function( PointerX );
}

我想要的是 ++ 反映在 PointerX 中,而不是将其声明为全局变量。

非常感谢你。

4

3 回答 3

16

在 C++ 中,通过引用传递指针(不要忘记为函数指定返回类型):

void Function (unsigned char*& ubPointer)
//                           ^
{
    ubPointer++;
}

这不需要对调用代码进行任何进一步的更改。ubPointer从函数返回时,调用者可以看到副作用。

在 C 中,您可以通过将指针传递给您的指针来实现等效结果:

void Function (unsigned char** ubPointer)
//                           ^
{
    (*ubPointer)++;
//  ^^^^^^^^^^^^
}

这将要求您更改调用函数的方式:

int main()
{
    unsigned char* p;
    Function(&p);
    //       ^
}
于 2013-03-09T21:12:16.733 回答
0

或者,如果你想做 C 风格

void Function (unsigned char **ubPointer)
{
    (*ubPointer)++;
}

因为

Function (unsigned char **ubPointer)
{
    ubPointer++;
}

将增加指向的地址。

于 2013-03-09T21:14:35.520 回答
-1
void Function (unsigned char *ubPointer)
{
    (*ubPointer)++;  
}

int main (void)
{
    unsigned char *PointerX;

    Function( PointerX );
}

这是修正

于 2021-01-16T19:45:53.920 回答