[英]Why doesn't struct exist after declaration inside of function?
我已经尝试了很多简单的例子,但没有任何工作。
我的目标是有一个 function 在内部声明一个结构,设置结构的值,然后返回结构。
struct getData(void){
typedef struct{
int count1;
int count2;
} MyStruct;
MyStruct myData;
myData.count1 = 5;
myData.count2 = 6;
return myData;
};
int main(void) {
struct myData = getData()
printf("count1: %i", myData.count1);
printf("count2: %i", myData.count2);
}
我发现的每个示例都与此类似,但由于某种原因,它没有找到我的名为 MyStruct 的结构。 确切的错误是:
error: expected identifier or ‘(’ before ‘void’
struct getData(void){
^~~~
我不断收到的错误让我觉得它不喜欢 function 中的结构。
您的问题似乎是对struct
关键字的使用感到困惑。 你不需要struct myData
来声明一个名为myData
的变量,它是struct
类型的,因为实际上并没有struct
类型。 您所做的是struct myData <SOMETHING>
将<SOMETHING>
定义为名为struct myData
的新数据类型。 然后你可以说struct myData dat;
,从而声明dat
是struct myData
类型的变量。
你也在顶部展示了同样的困惑,你有struct getData(void)
...你试图将getData
声明为 function 返回一个结构,但你真的必须做类似struct myData getData(void)
声明一个 function 返回类型struct myData
。
我认为写你所追求的更标准的方法是这样,使用结构的独立定义,然后使用 function 调用的指针。 As written your code seems to have some scope issues (declaring a struct typedef inside a function, hmmm...) [Incorrect->] plus I don't believe structs can be passed around that way in C, I'm pretty sure你必须使用指针。 [编辑哎呀这是不正确的! 看评论]
#include<stdio.h>
typedef struct {
int count1;
int count2;
} MyStruct;
void getData (MyStruct* myDataPtr) {
myDataPtr->count1 = 5; //note pointer access notation ->
myDataPtr->count2 = 6;
};
int main(void) {
MyStruct myData;
MyStruct* sPtr = &myData; //create pointer to struct, assign to myDaya
getData(sPtr); //pass pointer to function
printf("count1: %i \n", myData.count1);
printf("count2: %i \n", myData.count2);
}
输出:
count1: 5
count2: 6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.