作为参数发送时增加指针的值

Rob*_*elo 5 c c++ microcontroller pointers

我陷入了以下指针问题:

假设你有一个功能:

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

int main (void)
{
    unsigned char *PointerX;

    Function( PointerX );
}
Run Code Online (Sandbox Code Playgroud)

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

非常感谢你.

And*_*owl 15

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

void Function (unsigned char*& ubPointer)
//                           ^
{
    ubPointer++;
}
Run Code Online (Sandbox Code Playgroud)

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

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

void Function (unsigned char** ubPointer)
//                           ^
{
    (*ubPointer)++;
//  ^^^^^^^^^^^^
}
Run Code Online (Sandbox Code Playgroud)

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

int main()
{
    unsigned char* p;
    Function(&p);
    //       ^
}
Run Code Online (Sandbox Code Playgroud)