gpt4 book ai didi

c++ - C 不支持通过引用传递变量。怎么做?

转载 作者:行者123 更新时间:2023-11-30 21:37:42 24 4
gpt4 key购买 nike

这是 C++ 代码:

void Foo(char* k, struct_t* &Root) 

如何用纯C实现它?

最佳答案

你是对的,C 不支持按引用传递(因为它是由 C++ 定义的)。但是,C 支持传递指针。

从根本上来说,指针就是引用。指针是存储变量所在内存地址的变量。因此,标准指针与 C++ 引用相当。

因此,在您的情况下,void Foo(char *k, struct_t* &Root) 将类似于void Foo(char *k, struct_t **Root)。要访问 Foo 函数中的 Root 结构,您可以这样说:

void Foo(char *k, struct_t **Root){
// Retrieve a local copy of the 1st pointer level
struct_t *ptrRoot = *Root;
// Now we can access the variables like normal
// Perhaps the root structure contains an integer variable:
int intVariable = ptrRoot->SomeIntegerVariable;
int modRootVariable = doSomeCalculation(intVariable);
// Perhaps we want to reassign it then:
ptrRoot->SomeIntegerVariable = modRootVariable;
}

因此,仅传递指针相当于传递引用。

关于c++ - C 不支持通过引用传递变量。怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28031327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com