对于大多数人来说,这可能是一个琐碎的问题,但是我对c ++还是陌生的。我的问题是,我将如何传递一个与函数相对应的指针以对指针值进行操作?
char first_name[] = "hello";
int myFunc(const char *source){
innerFunc(char *source){/*append world*/}
}
这似乎不起作用。
答案 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
是一个非常奇怪的名称,尤其是名字。可能不是您想要的。