存储指针值以供以后使用

时间:2016-05-26 13:15:09

标签: c

我在指针storeName中存储了一个值,但是当我稍后尝试在程序中使用回调storeName访问它时为空。我相信name函数中的bz parent是本地的。更改parent功能不在我的掌控之中。在storeName函数setName中存储值的最佳方法是什么,因此storeName可以在以后使用。

void parent()
{  
   uint8_t name[] = "James";
   setName(name);
}

static uint8_t* storeName;

void setName(uint8_t* name)
{
   storeName = name;
}

...代码中的其他一点

//*storeName is empty

(注意:上面的代码是一个简化版本,只是为了解释手头的问题)

1 个答案:

答案 0 :(得分:3)

您正在传递本地变量的地址。 name中的数组parentparent退出时超出范围,因此指向该变量的指针现在指向未指定的内存位置,并且访问它会导致未定义的行为。

如果你这样定义name

uint8_t *name = "James";

然后它指向一个常量字符串,该字符串位于内存的只读部分,可以在函数外部安全地读取。这与前一个声明的不同之处在于常量字符串用于初始化数组,在这种情况下,您有一个指向实际常量的指针。