在C代码中,我无法将结构数组传递给函数,这是类似于我的问题的代码:

类型定义结构
{
int x;
int y;
字符* str1;
char * str2;
} Struct1;

无效processFromStruct1(Struct1 * content []);
int main()
{
Struct1 mydata [] =
{{1,1,“黑色”,“猫”},
{4,5,“红色”,“鸟”},
{6,7,“棕色”,“狐狸”},
};

processFromStruct1(mydata);//如何?!??找不到正确的语法

返回0;
}

无效processFromStruct1(Struct1 * content [])
{
printf(“%s”,content [1]-> str1);//如果要打印'red',对吗?
...
}

msvc中的编译错误是这样的:

错误C2664:“processFromStruct1”:无法将参数1从“Struct1 [3]”转换为“Struct1 * []”
1>指向的类型无关;转换需要reinterpret_cast,C样式强制转换或函数样式强制转换

怎么解决呢? tnx。

最佳答案

您几乎都拥有它

void processFromStruct1(Struct1 *content);

或这个
void processFromStruct1(Struct1 content[]);

就像Alok在评论中指出的那样,
content[1]->str1

对此
content[1].str1

您的数组是结构的数组,而不是指针的数组,因此一旦使用[1]选择特定的结构,就无需进一步取消引用它。

关于c - 如何在C/C++中使用指针传递结构数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2360794/

10-11 21:58