gpt4 book ai didi

c++ - 按值传递 char*

转载 作者:行者123 更新时间:2023-11-28 00:17:28 25 4
gpt4 key购买 nike

下面的代码行得通吗? -

void doSomething(char* in)
{
strcpy(in,"mytext");
}

函数的调用方式如下:

doSomething(testIn);
OtherFn(testIn);

中的 char* 在代码的其他地方使用...我们将它按值传递给函数 doSomething。我知道当我们按值传递时,存储在 char* 中的字符串的拷贝被复制到函数中。那么,当我们执行 strcpy 时,它会复制到本地拷贝还是复制到作为参数传入的 char* in

我的理解是我们需要做:doSomething(char* &in)。是吗?

最佳答案

当你只想修改指针指向的内容时,使用:

doSomething(char* in)

所以,是的,

void doSomething(char* in)
{
strcpy(in,"mytext");
}

只要 in 指向足够的内存来容纳 "mytest" 和终止空字符,它就可以正常工作。

有时您想要修改指针指向的位置,例如,通过分配新内存。然后,您需要传递对指针的引用。

void doSomething(char*& in)
{
in = new char[200];
strcpy(in,"mytext");
}

并将其用作:

char* s = NULL;
doSomething(s);
// Now s points to memory that was allocated in doSomething.

// Use s


// make sure to deallocate the memory.
delete [] s;

关于c++ - 按值传递 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360695/

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