在C中将结构作为参数传递给函数

在C中将结构作为参数传递给函数,c,pointers,struct,parameter-passing,C,Pointers,Struct,Parameter Passing,我有这个问题,不知道原因 我有这个结构 typedef struct { Int32 frameID; Int32 slotIndx; Int32 symNumber; } recControlList; recControlList *recControlListPtr; 数据类型是typedef 调用方函数是: Fun( recControlListPtr); 有趣的声明是 Fun (recControlList *recCon

我有这个问题,不知道原因

我有这个结构

typedef struct 
{

    Int32   frameID;
    Int32   slotIndx;
    Int32   symNumber;

}   recControlList;


    recControlList  *recControlListPtr;
数据类型是typedef

调用方函数是:

Fun( recControlListPtr);
有趣的声明是

Fun (recControlList *recControlListPtr);


syntax error : missing ')' before '*'

如何将结构作为指针传递到函数中?请帮助

您只需通过它,如在

char* xy = "HelloWorld";
if(!strcmp(xy, "HelloWorld"))
你也可以做一个

struct xy ;
functionName(&xy);

是否为函数指定了返回值?

只需传递它,如

char* xy = "HelloWorld";
if(!strcmp(xy, "HelloWorld"))
你也可以做一个

struct xy ;
functionName(&xy);

是否为函数指定了返回值?

声明缺少返回类型,例如:

void Fun (recControlList *recControlListPtr);

编辑:正如其他人所指出的,函数声明中的返回类型在C的某些变体中是可选的,但它的风格很好,并且由于消除歧义,它可以为您提供更好的错误消息。

该声明缺少返回类型,例如:

void Fun (recControlList *recControlListPtr);

编辑:正如其他人所指出的,函数声明中的返回类型在C的某些变体中是可选的,但它的风格很好,并且由于消除歧义,它可以为您提供更好的错误消息。

在声明乐趣之前,您需要有struct声明和typedef

如果所有这些都在同一个文件中,那么它们的顺序就是错误的。如果结构声明在不同的文件中,则需要在函数原型之前包含该结构

编辑:那么关于你的第二个问题


在声明乐趣之前,您需要有struct声明和typedef

如果所有这些都在同一个文件中,那么它们的顺序就是错误的。如果结构声明在不同的文件中,则需要在函数原型之前包含该结构

编辑:那么关于你的第二个问题

你可以参考这个网站。给出了通过地址将结构传递给函数的非常简单的示例程序。 我希望这对你有用。

你可以参考这个网站。给出了通过地址将结构传递给函数的非常简单的示例程序。

我希望这对您有用。

在C中,返回类型是可选的。您应该得到一个编译器警告,但不是错误。Alexandre,C99允许在没有返回类型的情况下进行函数声明。然后该类型默认为int。@davmac C99将删除隐式int返回类型。C99模式下的编译器应产生错误或警告。在C89中,它是fine@Alexandre您是正确的,但是您最初声称将得到一个错误是误导性的。返回类型在C中是可选的。您应该得到一个编译器警告,但不是错误。Alexandre,C99允许没有返回类型的函数声明。然后该类型默认为int。@davmac C99将删除隐式int返回类型。C99模式下的编译器应产生错误或警告。在C89中,它是fine@Alexandre你是对的,你最初声称你会得到一个错误是误导性的,然而,这似乎就是问题所在。此外,我还尝试在函数dec中使用强制struc,因为没有人对bfor注释过的标记。他们都工作。我已经在一些h文件中定义了结构,它现在包含在函数调用之前。现在我得到了不同的错误:错误:recControlList*类型的参数与recControlList类型的参数不兼容..请帮助更正[错误:recControlList*类型的参数与recControlList类型的参数不兼容]谢谢firoze!但我不理解这个概念,实际上我需要声明结构指针并需要传递给函数。我应该把它记为**而不是*?事实上,我之前误读了你的代码,认为我看到了一些我没有看到的东西。很抱歉。因此,如果希望参数是指向recControlList的指针,那么参数就是recControlList*。一开始,似乎这就是问题所在。此外,我还尝试在函数dec中使用强制struc,因为没有人对bfor注释过的标记。他们都工作。我已经在一些h文件中定义了结构,它现在包含在函数调用之前。现在我得到了不同的错误:错误:recControlList*类型的参数与recControlList类型的参数不兼容..请帮助更正[错误:recControlList*类型的参数与recControlList类型的参数不兼容]谢谢firoze!但我不理解这个概念,实际上我需要声明结构指针并需要传递给函数。我应该把它记为**而不是*?事实上,我之前误读了你的代码,认为我看到了一些我没有看到的东西。很抱歉。因此,如果希望参数是指向recControlList的指针,那么参数就是recControlList*。这是一个已经被回答过的相当古老的问题。在回答中提供链接而不提及相关部分不是一个很好的做法,因为该链接可能在将来某个时候失效。这是一个已经被回答过的相当古老的问题。在回答中提供链接而不提及相关部分不是一个很好的做法,因为该链接可能在将来某个时候失效。请看一些意见。