我陷入了以下指针问题:

说你有一个功能:

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

int main (void)
{
    unsigned char *PointerX;

    Function( PointerX );
}

我想要的是++反射(reflect)在PointerX中,而没有将其声明为全局变量。

非常感谢你。

最佳答案

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

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

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

在C语言中,您可以通过将指针传递到您的指针来获得等效的结果:
void Function (unsigned char** ubPointer)
//                           ^
{
    (*ubPointer)++;
//  ^^^^^^^^^^^^
}

这将要求您更改调用函数的方式:
int main()
{
    unsigned char* p;
    Function(&p);
    //       ^
}

10-06 04:49