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

时间:2013-03-09 21:11:02

标签: c++ c pointers microcontroller

我陷入了以下指针问题:

假设你有一个功能:

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

int main (void)
{
    unsigned char *PointerX;

    Function( PointerX );
}

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

非常感谢。

3 个答案:

答案 0 :(得分:14)

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

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

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

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

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

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

int main()
{
    unsigned char* p;
    Function(&p);
    //       ^
}

答案 1 :(得分:0)

或者,如果你想做C风格的

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

,因为

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

会增加指向的地址。

答案 2 :(得分:-1)

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

int main (void)
{
    unsigned char *PointerX;

    Function( PointerX );
}

这是更正