weixin_38224294
西瓜太溜
采纳率100%
2017-04-13 09:50

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

5
已采纳

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 *"
程序大致就是这样定义的,不知道该怎么改,卡了好久,请大家帮帮忙,谢谢。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • a29562268 坤昱 4年前

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

    点赞 评论 复制链接分享
  • lixiaogang_theanswer 君子黎 4年前
    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;

    
    
    
    点赞 评论 复制链接分享
  • weixin_38224294 西瓜太溜 4年前

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

    点赞 评论 复制链接分享

相关推荐