将引用变量传递给函数

时间:2018-09-28 15:03:01

标签: c++ pointers

对于大多数人来说,这可能是一个琐碎的问题,但是我对c ++还是陌生的。我的问题是,我将如何传递一个与函数相对应的指针以对指针值进行操作?

char first_name[] = "hello";
int myFunc(const char *source){
    innerFunc(char *source){/*append world*/}
}

这似乎不起作用。

1 个答案:

答案 0 :(得分:1)

一个例子:

char first_name[] = "hello";

int inner_func(const char* source) { /* do something, read-only */ }

int my_func(const char* source) {
    inner_func(source);
}

所以,您只需要传递名称即可。

但是,请注意,您已经将指针作为const传递了,这意味着您无法更改它。追加world在该实例中不起作用。实际上,如果您想以可变的方式对char字符串进行操作,则需要使用扩展的大小动态创建第二个char*。您不能更改source

此外,此类内部函数无法在C ++中定义。只需在myFunc之外定义它即可。您可以使用lambda创建内部函数,但这将是另一个答案。

幸运的是,在C ++中,对字符串的操作要容易得多,而且建议深度:

#include <string>

std::string first_name = "hello";

int inner_func(std::string& source) {
    source += " world";
}

int my_func(std::string& source) {
    inner_func(source);
}

现在,当您将诸如first_name之类的字符串传递给my_func时,它将被传递到附加了一些字符串的inner_func

但是请注意,hello world是一个非常奇怪的名称,尤其是名字。可能不是您想要的。