请大家指点,c语言中,结构体作为形参传递且结构体中含有二维数组

typedef struct
{
u8 z[3][3];
}Data
void abcd(Data data)
{
data->z[0][0]=3;
}
/
*********************以上均没报错****************************/
void efgh(Data data)
{
data->z[1][1]=2;
abcd(&data);//出错
}
/
************************此句报错**************************************/
..\HARDWARE\CROSS\cross.c(83): error: #167: argument of type "
data **" is incompatible with parameter of type "data *"
程序大致就是这样定义的,不知道该怎么改,卡了好久,请大家帮帮忙,谢谢。

把&去掉,因为你穿入的参数多了一维

自顶,以前这么用过结构体中含有一维数组的,没出错。是结构中含有的二维数组所以出错吗?请大家指教。谢谢

  1. 下面这段肯定会报错,“->”指向运算符是用于结构体指针来指向结构体成员;你只是定义了一个结构体变量,应该用成员运算符“.”;

```void abcd(Data data)
{
data->z[0][0]=3;
}

void efgh(Data data)
{
data->z[1][1]=2;
abcd(&data);//出错
}

所以,你把这两个函数中的“->”换为“.”来访问结构体中的成员,就不会出错了;
2.“u8”什么类型?我想应该是

typedef int u8;