C-将本地声明的String可以在函数调用之外访问吗?

时间:2013-01-27 11:34:53

标签: c

  

可能重复:
  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所以任何帮助都会很好!谢谢

1 个答案:

答案 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);
}