在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/