1

可能重复:
从函数返回字符串时
遇到问题 可以在其范围之外访问局部变量的内存吗?

我正在尝试使用函数来修改字符串指针的值。我声明了一个名为 someStruct 的结构,其中一个字段是指向名为“value”的字符串的指针。这是我所做的:

void func(char* nvalue,someStruct* container){
    char temp[strlen(nvalue+1);
    temp=strcpy(temp,nvalue);
    container->valu=temp;
    return;

这个函数会把容器的值修改为nvalue吗?如果没有,我该怎么做?我真的不擅长C,所以任何帮助都会很好!谢谢

4

1 回答 1

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);
}
于 2013-01-27T11:39:17.913 回答