gpt4 book ai didi

c - 在C编程中,有没有办法在子结构体(结构体中的结构体)中获取函数的返回值?

转载 作者:行者123 更新时间:2023-11-30 19:01:37 25 4
gpt4 key购买 nike

我正在尝试返回双结构中的一些函数。

当你在单个结构体中获得返回值时总是可以的。我想做的是在结构结构中定义结构。也就是说,在父结构中创建子结构。例如,如下面的源代码所示,我创建了两个结构体“Person”和“Machine”,然后我想在“Machine”下添加 Person 结构体,以便获得双结构体,可以使用定义机器人。然后想在父结构中的一个结构中获取函数的一些返回值,即 machine->person->name ..每次我在 buff->PD 中返回时,都会发生一些错误。当然,我可以使用像 Person 或 Machine 这样的单一结构,但这不是我打算做的。

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

typedef struct _Person {
char name[20];
int age;
} Person;

typedef struct _Machine {
char address[100];
Person PD ;
} Machine;

Person *GetPersonData(){
Person *pd = (Person*)malloc(sizeof(Person)) ;
strcpy(pd->name, "GETperson");
return pd ;
//free (pd) ;
}
Machine *GetMachineData(){
Machine *md = (Machine*)malloc(sizeof(Machine)) ;
strcpy(md->address, "GETmachine");
return md ;
//free (md) ;
}
Person *GetPDdata(){
Person *pd = (Person*)malloc(sizeof(Person)) ;
strcpy(pd->name, "GOT Machine people");
return pd ;
//free (md) ;
}

int main(){
Person *p1;
Machine *m1 ;
Machine *buff ;
p1 = GetPersonData() ;
m1 = GetMachineData() ;

buff->PD = GetPDdata() ; // Error code
m1->PD.name = buff->PD.name ; // Error code

return 0;
}

最佳答案

  buff->PD = GetPDdata() ; // Error code

这里 buff 没有用任何值初始化。你需要先分配buff

m1->PD.name = buff->PD.name  ;  // Error code      

这里不能直接赋值字符串,需要使用strcpy

关于c - 在C编程中,有没有办法在子结构体(结构体中的结构体)中获取函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57552208/

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