很抱歉,如果我问了一个以前已经做过很多次的问题,但我没有找到解决方案。
我有这个typedef结构
typedef struct
{
int matrix[row][col];
}Position;
我创建了一个可变
Position park[weeks];
然后我在子程序中调用它
void foo(struct Position *park[weeks]...)
然后
park[s].matrix[i][j]=car[k].id;
我有"请求etc等"的错误,在上面的这一行。我做错了什么?对不起我的英语。
更改
park[s].matrix[i][j]=car[k].id;
至
park[s]->matrix[i][j]=car[k].id;
您已经将parks
声明为指向Position
的指针的数组,因此必须使用运算符->
来访问matrix
成员。
或者,您可以编写
(*park[s]).matrix[i][j]=car[k].id;
但CCD_ 5算子稍微干净一些。
只需删除foo中的*即可。然后一切都会好起来的
void foo( Position *park[weeks]...)
==>
void foo(Position park[weeks]...)
或
void foo(Position *park,...)
像这样:
typedef struct
{
int matrix[2][2];
}Position;
void foo(Position *park)
{
park[1].matrix[1][1]=5;
}
int main()
{
Position park[2];
foo (park);
return 0;
}
我不明白为什么typedef结构应该放在main中,但是,如果必须的话,也许你也可以把函数放在main:
int main()
{
typedef struct
{
int matrix[2][2];
}Position;
void foo(Position *park)
{
Position *park1 = (Position *)park;
park1[1].matrix[1][1]=5;
};
Position park[2];
foo (park);
printf("%dn",park[1].matrix[1][1]);
return 0;
}