首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过值传递char*

通过值传递char*
EN

Stack Overflow用户
提问于 2015-03-31 12:36:36
回答 1查看 1.6K关注 0票数 0

下面的代码可以工作吗?

代码语言:javascript
复制
void doSomething(char* in)
{
    strcpy(in,"mytext");
}

下面是该函数的调用方式:

代码语言:javascript
复制
doSomething(testIn);
OtherFn(testIn);

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-03-31 12:41:41

如果只想修改指针所指向的内容,请使用:

代码语言:javascript
复制
doSomething(char* in)

所以,是的,

代码语言:javascript
复制
void doSomething(char* in)
{
   strcpy(in,"mytext");
}

只要in指向足够的内存来容纳"mytest"和一个终止空字符,就可以很好地工作。

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

代码语言:javascript
复制
void doSomething(char*& in)
{
   in = new char[200];
   strcpy(in,"mytext");
}

并将其用作:

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29360695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档