我正在尝试在名为“nameChanger”的函数中重新分配一个 Person 指针,我做错了什么?如何重新分配一个 Person
指针,使其指向另一个 Person
?
#include <stdio.h>
#include <string.h>
typedef struct {
int age;
char name[50];
} Person;
void nameChanger(Person ** person);
int main() {
Person brian;
brian.age = 27;
strcpy(brian.name, "brian");
Person * brian_pointer = &brian;
nameChanger(&brian_pointer);
printf("changing name to 'rick' : %s\n", brian_pointer->name); // should be 'rick'
return 0;
}
void nameChanger(Person ** person){
Person rick;
rick.age = 50;
strcpy(rick.name, "rick");
Person * rick_p = &rick;
*person = &rick;
}
最佳答案
这里的问题是 rick
是 nameChanger
函数的局部变量。一旦函数结束执行,rick
将不复存在。因此,返回的指针和任何引用都将无效。
您可以使rick
成为指针,并使用malloc()
分配内存。和家人。这样,分配的内存的生命周期将一直到内存为free()
-d,所以返回后,访问才有效。
关于c - 如何重新分配结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320189/