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

标签 c++ c pointers microcontroller

我陷入了以下指针问题:

假设你有一个函数:

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);
    //       ^
}

关于c++ - 作为参数发送时增加指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15315967/

相关文章:

c++ - 在 C/C++ 中遍历 Fasta 文件

c - 我试图将一个字符串解析为不同的单词,稍后尝试释放它们,但其中 2 个字符串具有相同的字节地址

pointers - 在 swift 中将 CFContextRef 转换为可变的 void 指针?

c++ - 负 RGB 值

c++ - 使用包含空格的命令时 ExternalProject_Add 的奇怪行为

c++ - XP 嵌入式 CRT 版本问题..LoadLibraryEx 失败

c - 如何有效地构建 C 程序

c - 堆和免费作业

c++ - 如何在C++中复制指针数组的数据

c++ - 在标识符 ";"之前缺少 "name",即使它在那里