一江春水向东流

做一个有思想的人,期待与每一位热爱思考的人交流,您的关注是对我最大的支持。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  44 随笔 :: 139 文章 :: 81 评论 :: 0 Trackbacks

二维数组的传参
二级数组传递参数时,不能以一个二级指针的方式,以二级指针的方式只传递了这个二级数组的首地址,但没有带出这个二维数组各元素的地址,编译器不能通过二级指针的移动寻找其元素。对于二级数组要用数组指针的形式传参

#include <stdio.h>
void print_arr (char (*a)[4])
{
    int i;
    for(i = 0; i < 3; i++)
    printf("%s\n", a[i]);
}

int main()
{
    char *str_arr[3][4] = {"yes", "no", "uncertain"};
    print_arr (str_arr);
    return 0;
}

如果要以二级指针的形式传参,可以在定义为字符串指针数组的形式
char *str_arr[] = {"yes", "no", "uncertain"};
void print_arr (char **a)
{
    int i;
    for (i=0; i<3;i++)
    printf("%s\n", *(a+1));
}

posted on 2008-03-23 10:02 allic 阅读(4905) 评论(2)  编辑  收藏 所属分类: C/C++

评论

# re: 二维数组传递参数 2008-10-01 21:45 boo
int main()
{
char *str_arr[3][4] = {"yes", "no", "uncertain"};
print_arr (str_arr);
return 0;
}

这一段,char *str_arr[3][4] = {"yes", "no", "uncertain"};
是不是要写成char str_arr[3][10] = {"yes", "no", "uncertain"};

void print_arr (char (*a)[4]) 也要改成void print_arr (char (*a)[10])

  回复  更多评论
  

# re: 二维数组传递参数[未登录] 2012-10-22 21:26 111
这博主估计就是抄过来的,他现在都不一定知道哦啊!@boo
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: