【发布时间】:2013-11-06 22:03:46
【问题描述】:
How do I return a char array from a function?
答案中有以下代码:
void testfunc(char* outStr){
char str[10];
for(int i=0; i < 10; ++i){
outStr[i] = str[i];
}
}
int main(){
char myStr[10];
testfunc(myStr);
// myStr is now filled
}
由于我将使用内存非常宝贵的 Arduino,因此我不想要一个“临时变量”来存储一些字符串然后将其复制过来。我也不希望函数返回任何东西。我想使用上面的想法并执行以下操作:
void testfunc(char* outStr){
outStr="Hi there.";
}
int main(){
char myStr[10];
testfunc(myStr);
}
但是,在这种情况下,myStr 是空的!
为什么这不起作用?我该如何解决?
(我对C比较陌生,对指针有基本的了解)
谢谢。
【问题讨论】:
-
使用 strcpy()。不添加传递传递的 char[] 大小的参数是错误的。
-
您能否详细说明传递 char[] 的大小。如果我不使用它的大小,那为什么要通过它?
-
您说您没有使用大小,但是要复制字符串
"Hi there.",您需要以某种方式知道参数指向的数组至少为10个字节。如果该数字 10 是您的函数文档的一部分,那么您几乎可以摆脱它。但这是一种不寻常的情况:更常见的是调用者需要告诉你数组的大小,这样你就可以避免超出它。 -
谢谢!在您发布回复之前,我还发现了这个stackoverflow.com/questions/6638729/…
标签: c++ c function pointers arduino