如何使用参数将struct
类型数据传递给另一个函数?我已经创建了global
struct
,但我想我已经错过了一些东西
#include <stdio.h>
#include <stdlib.h>
struct Stuff
{
int id;
String name[20];
}
// call another function
int myFunctionInsert(Stuff *stuff);
int main()
{
struct Stuff *stuff[20];
myFunctionInsert(*stuff);
}
int myFunctionInsert(Stuff *stuff)
{
int x;
for(x = 0; x < 25; x++){
stuff[x].id = x;
stuff[x].name = 'stuff';
}
}
所以我的目的是当我已经调用myFunctionInsert
时,struct
数据与我在该函数中输入的数据相同。
例如,当我打电话给myFunctionShow
(我没有写入)时,数据显示应该是这样的
id : 1
name : stuff
// until 25
当我尝试上面的代码时,我收到了错误
未知的类型名称&#39; Stuff&#39; (在第i行中称为
myFunctionInsert(Stuff *stuff)
)
任何帮助将不胜感激
感谢
答案 0 :(得分:3)
您定义的类型为pip3
而不是struct Stuff
。因此:
Stuff
或者使用// call another function
int myFunctionInsert(struct Stuff *stuff);
:
typedef
答案 1 :(得分:2)
问题不仅在于缺少typedef
。
由于for(x = 0; x < 25; x++){
越过
struct Stuff *stuff[20];
stuff[x].name = 'stuff';
也不会飞。你的意思是“东西”。请注意,C语言中没有String
类型。
指定传递的结构数组大小的程序的工作版本可能如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct stuff
{
int id;
char name[20];
}Stuff;
// call another function
int myFunctionInsert(Stuff *stuff, int len);
int myFunctionInsert(Stuff *stuff,int len)
{
int x;
for(x = 0; x < len; x++){
stuff[x].id = x;
strcpy( stuff[x].name, "stuff");
printf("stuff %i id=%d name=%s\n", x, stuff[x].id, stuff[x].name );
}
}
int main()
{
Stuff sf[25];
myFunctionInsert(sf,5); // init 5 structures
return 0;
}
输出:
stuff 0 id=0 name=stuff
stuff 1 id=1 name=stuff
stuff 2 id=2 name=stuff
stuff 3 id=3 name=stuff
stuff 4 id=4 name=stuff