0

对不起,如果我问一个以前已经做过很多次的问题,但我没有找到解决办法。

我有这个 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;

我在上面的这一行中有“请求等”错误。我究竟做错了什么?对不起我的英语不好。

4

2 回答 2

4

改变

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;

->操作员更干净一些。

于 2013-08-20T11:20:51.310 回答
1

只需删除你 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 struct 应该放在 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("%d\n",park[1].matrix[1][1]);
    return 0;
}
于 2013-08-20T11:17:05.770 回答