我已经声明了结构:
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 的新手。
最佳答案
当您在函数中时,key 和value 变量都是指向堆栈中分配的数组的指针。在 keyValuepairs[1].key=key 之后,全局变量指向堆栈中的相同位置。退出函数后,这些数组所在的内存将被重新使用。
我建议您阅读 C 中的静态分配与动态分配
关于c - 无法在结构中赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174665/