gpt4 book ai didi

c - 由函数初始化的结构数组

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

我想做的是创建一个结构数组,并通过一个函数对其进行初始化,但是我遇到了一些错误,

lab2.c:20:2: error: declaration of anonymous struct must be a definition
struct *person users[] = userInput();
^
lab2.c:20:2: warning: declaration does not declare anything[-Wmissing-declarations]
struct *person users[] = userInput();
^~~~~~
lab2.c:24:1: error: declaration of anonymous struct must be a definition
struct * userInput() {
^
lab2.c:48:2: error: expected identifier or '('
}
^
1 warning and 3 errors generated.

下面是我的代码,精简版,如果需要更多请告诉我,我是 C 的新手,所以我猜这是我的一个明显错误。

int main() {
struct person users = userInput();
return 0;
}

struct * userInput() {
struct person users[30];
...do stuff to struct here...
return *users;
}

最佳答案

当声明指向标记的struct 的指针时,星号跟在标记后面,而不是关键字struct。要声明动态分配的数组,请使用不带方括号的星号:

struct person *users = userInput();

返回一个指向局部变量的指针是未定义的行为:

struct person users[30];
// This is wrong
return *users;

改为使用动态分配的内存:

struct person *users = malloc(sizeof(struct user) * 30);

处理完数据后,您需要在调用方中释放它。

关于c - 由函数初始化的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107000/

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