c - 无法在结构中赋值

标签 c pointers structure

我已经声明了结构:

typedef struct keyValuePairs{
char* type;
char* key;
char* valueType;
char* value;
} keyValueType;

keyValueType keyValuePairs[1000];

并且在函数中将局部变量声明为:

char key[500];
char value[500];

将键值对值保存为:

key[i]="abc";
value[i]="xyz"

我已将这些局部变量分配给全局变量:

keyValuepairs[1].key=key.

一旦我退出函数,结构中分配的值就会丢失。有人可以解释我哪里出错了吗? 请注意我是 C 的新手。

最佳答案

当您在函数中时,keyvalue 变量都是指向堆栈中分配的数组的指针。在 keyValuepairs[1].key=key 之后,全局变量指向堆栈中的相同位置。退出函数后,这些数组所在的内存将被重新使用。

我建议您阅读 C 中的静态分配与动态分配

关于c - 无法在结构中赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174665/

相关文章:

c - 下面的内存分配有什么不同吗?

c++ - 为什么将 '*' 放在返回结构指针的函数上?

c - 访问结构成员时返回字节,打印结构变量地址时发生段错误

c - 字符串格式、strtok 问题

c++ - 为什么 C++ 回调 C 函数需要 "extern C"?

c - 使用结构体调试 C 程序

c - 什么是结构中的内存泄漏?我们该如何纠正呢?

c - 在函数中传递结构

c - 新创建的用户上的 RegOpenCurrentUser(KEY_WRITE)

c - STAT block 大小/使用的 block