免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2127 | 回复: 5
打印 上一主题 下一主题

[函数] 高手请观注一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-17 17:49 |只看该作者 |倒序浏览
struct group
{
    char *a[2][2];
};

void test(char ***str)
{
    str[0][0] = strdup("hello");
}

int main(void)
{
    struct group *g = malloc(sizeof(struct group));

    test(g->a);

}

论坛徽章:
0
2 [报告]
发表于 2010-09-17 17:53 |只看该作者
如果要传多维数组的话,只有第一维下标不用写,其余下标要写在函数声明中。
void test(char *str[2][2]);像这样。

PS:楼主新手吧,有这样提问问题的么?

论坛徽章:
0
3 [报告]
发表于 2010-09-18 17:35 |只看该作者
本帖最后由 linyunxian 于 2010-09-18 17:37 编辑

回复 2# davelv


    void test(char *(*str)[2])     // 这样才更合理一些吧?

论坛徽章:
0
4 [报告]
发表于 2010-09-18 18:31 |只看该作者
回复  davelv


    void test(char *(*str)[2])     // 这样才更合理一些吧?
linyunxian 发表于 2010-09-18 17:35



char * str[2][2] ;首先是一个二维数组,然后每个元素都是一个char指针;
char* (*str)[2]; 这个意思就是,首先是一个指针,指向了一个一维数组,数组的元素是char*指针;

char * str[][2];在函数声明中的含义是一样的,数组会最高维退化为指针。

虽然那种写法没问题,不过参考2楼我的用语,的确表达的意思是不正确的,谢谢指点。

论坛徽章:
0
5 [报告]
发表于 2010-09-18 21:48 |只看该作者
咋了?

论坛徽章:
0
6 [报告]
发表于 2010-09-19 09:07 |只看该作者
不是高手,也想观注
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP