无法return结构体?
时间: 2023-09-15 18:19:01 浏览: 138
结构体的使用c语言练习题
在 C 语言中,是可以返回结构体的。可以使用以下两种方法:
1. 返回结构体变量
```
struct person {
char name[20];
int age;
};
struct person get_person() {
struct person p = {"John", 25};
return p;
}
int main() {
struct person p = get_person();
printf("Name: %s, Age: %d\n", p.name, p.age);
return 0;
}
```
2. 返回结构体指针
```
struct person {
char name[20];
int age;
};
struct person* get_person() {
struct person* p = (struct person*) malloc(sizeof(struct person));
strcpy(p->name, "John");
p->age = 25;
return p;
}
int main() {
struct person* p = get_person();
printf("Name: %s, Age: %d\n", p->name, p->age);
free(p); // 释放动态分配的内存
return 0;
}
```
需要注意的是,如果返回结构体指针,需要在函数内部使用 `malloc` 分配内存,并在使用完成后手动释放内存,以防止内存泄漏。
阅读全文