免费注册 查看新帖 |

Chinaunix

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

[函数] 求向c函数传递多维数组问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-13 11:19 |只看该作者 |倒序浏览
现有数组:
  
int p[3][10]={{4,13,26},/*其实第二维的大小是不确定的*/
               {3,32,355,62,2},
               {75,24,77,43}
               };
现在要求在c中main()调用一个函数,用来输出数组每个元素.
该怎么实现啊.我写了个,但是有好多错误,希望高手指点啊

#include"stdio.h"

void main()
{
void test(int b[],int *a[],int m);

int p[3][10]={{4,13,26},
               {3,32,355,62,2},
               {75,24,77,43}
               };

int *a[4]={p,(p+1),(p+2),NULL};
test(p,a[0],4);
  
}

void test(int b[],int *a[],int m)
{ int i=0;
   int j=0;
  for(i<m;i++)
  for(j<10;j++)
printf("%d\n",*(b+1));
}

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-04-13 14:45 |只看该作者

求向c函数传递多维数组问题

用指针来实现,控制好你的指针,分清楚指针的维数(即分清楚到底指的是什么)。

论坛徽章:
0
3 [报告]
发表于 2005-04-13 16:22 |只看该作者

求向c函数传递多维数组问题

我有一个问题
如果用指针void test(int *b,int *a[],int m)
那么在test函数中怎样将这个指针重新造型成那个p[3][10]数组
这个C语法该怎么写?typedef?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-04-13 16:26 |只看该作者

求向c函数传递多维数组问题

你这个定义不是和你原来的定义一样的么?

C对于多维数组的操作很复杂,也很棘手。要么,将函数的参数定义成多维数组的形式,比如void test(int b[3][],...........,要么,就要在函数里自己控制操作好指针,因为完全无法把维数的信息带入函数。数组和指针,到底还是有区别的。

推荐看《C专家编程》,里面很清楚的讲述了这个问题。

论坛徽章:
0
5 [报告]
发表于 2005-04-13 17:06 |只看该作者

求向c函数传递多维数组问题

其实我只是想用起来方便点
不用拿指针来回算

int (*mm)[][10];   //定义一个指向数组的指针
mm = b;            //得到地址,以后都可以用*mm[x][y]的方式来用了
printf("[%d]\n", (*mm)[2][3]);     //例如这样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP