gpt4 book ai didi

c - 指向 C 中结构的指针

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:26 24 4
gpt4 key购买 nike

我正在学习 c 中的结构指针,并且我已经编写了这段学习代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct
{
int id;
char *name;
}struct_type_t;

void set_struct(struct_type_t **);

int main(int argc, char *argv[])
{
struct_type_t *m = NULL;

set_struct(&m);

printf("%d\n", m->id);
//fflush(stdout);
printf("%s\n", m->name);
return 0;
}

void set_struct(struct_type_t **m)
{
struct_type_t t;
*m = &t;

(*m)->id = 5;
(*m)->name = "Pointer To Structure";
}

set_struct 函数的作用是通过将指向结构struct_type *m 的指针的地址传递给函数来设置结构成员。

但是在main函数的printf行中,并没有打印结构体的字符串成员name,而是只打印了整型成员id

我已经使用了 fflush,但仍然无法正常工作。

请帮我更正这段代码并检查哪里出了问题....

最佳答案

您返回指向本地对象的指针。它是在堆栈上创建的。你不应该在函数完成它的工作后使用它,因为它不再存在并且它的内存可能包含其他对象。

使用 malloc 在堆上分配内存块,初始化它并使用它,直到您对其调用 free

关于c - 指向 C 中结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com