我陷入以下指针问题:
假设您有一个功能:
void Function (unsigned char *ubPointer)
{
ubPointer++;
}
int main (void)
{
unsigned char *PointerX;
Function( PointerX );
}
我想要的是 ++ 反映在 PointerX 中,而不是将其声明为全局变量。
非常感谢你。
我陷入以下指针问题:
假设您有一个功能:
void Function (unsigned char *ubPointer)
{
ubPointer++;
}
int main (void)
{
unsigned char *PointerX;
Function( PointerX );
}
我想要的是 ++ 反映在 PointerX 中,而不是将其声明为全局变量。
非常感谢你。
在 C++ 中,通过引用传递指针(不要忘记为函数指定返回类型):
void Function (unsigned char*& ubPointer)
// ^
{
ubPointer++;
}
这不需要对调用代码进行任何进一步的更改。ubPointer
从函数返回时,调用者可以看到副作用。
在 C 中,您可以通过将指针传递给您的指针来实现等效结果:
void Function (unsigned char** ubPointer)
// ^
{
(*ubPointer)++;
// ^^^^^^^^^^^^
}
这将要求您更改调用函数的方式:
int main()
{
unsigned char* p;
Function(&p);
// ^
}
或者,如果你想做 C 风格
void Function (unsigned char **ubPointer)
{
(*ubPointer)++;
}
因为
Function (unsigned char **ubPointer)
{
ubPointer++;
}
将增加指向的地址。
void Function (unsigned char *ubPointer)
{
(*ubPointer)++;
}
int main (void)
{
unsigned char *PointerX;
Function( PointerX );
}
这是修正