可能重复:
Trouble with returning a string from function
Can a local variable’s memory be accessed outside its scope?
我正在尝试使用函数来修改String指针的值。我声明了一个名为someStruct的结构,其中一个字段是一个指向字符串的指针,名为'valu'。这是我做的:
void func(char* nvalue,someStruct* container){
char temp[strlen(nvalue+1);
temp=strcpy(temp,nvalue);
container->valu=temp;
return;
此函数是否会将容器的值修改为nvalue?如果没有,我该怎么办?我真的不喜欢C所以任何帮助都会很好!谢谢
答案 0 :(得分:1)
由于tmp
是局部变量,因此在函数外部访问container->value
是一种未定义的行为。但是,可以使用动态分配来控制变量的生命周期。
#include <stdlib.h>
#include <string.h>
char **p = &container->value;
*p = malloc(strlen(nvalue) + 1);
if (*p != NULL)
{
strcpy(*p, nvalue);
}