CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

怎样传递一个二维数组?

楼主Alexeyomux(黑白的背影)2001-12-08 19:17:55 在 C/C++ / C语言 提问

        有一二维数组int   array[9][9]和一函数void   fun(int   par),现要将数组array  
  传入fun中去处理。如果借助参数par,则请各位指教:1。如是想用传址使用的方案,参数par应该用怎样的形式;2。如是想用传值使用的方案,参数par的形式又怎样?  
  我用int**   par这样的形式作形参,数组名array做实参,编译器却不认可?为什么?  
  先谢了! 问题点数:20、回复次数:9Top

1 楼cBeginner()回复于 2001-12-08 19:24:33 得分 0

是数组的话,传值和传址的方式是一样的。  
   
  void   fun(int   par[][])   或者   void   fun(int   [][])都可以。Top

2 楼wyzegg(蛋)回复于 2001-12-08 19:29:07 得分 0

应该传一个指针和两个维数  
  Top

3 楼GZCompiler(编译器)回复于 2001-12-08 19:43:27 得分 0

数组就是保存在内存中的一段数据,作为参数传给函数无非就是想让函数访问这段内存,  
  传地址吧,最好附上数组的维数。Top

4 楼jkjium(一般表示含有)回复于 2001-12-08 19:47:26 得分 0

函数fan的形参这样定义(int   **par)就行了。Top

5 楼kingfish(工作很忙,很少来csdn...)回复于 2001-12-08 20:00:40 得分 10

传地址,行,列  
  void   fun(int   *p,int   h,int   v)  
  {  
    int   i=3;  
    int   j=2;  
    *(p+v*i+j)=100;   //访问任意一个par[i][j]  
  }  
  使用  
    int   par[4][5];  
    fun(&par[0][0],4,5);Top

6 楼eastsun()回复于 2001-12-08 20:16:43 得分 0

很简单,你先强制转换(先做一个结构,这个结构中包括数组的信息,将这个结构的地址指针强制转换为一个int),在使用的地方,再强制转换回去。Top

7 楼JiangJiayan(LittleJiang)回复于 2001-12-08 20:22:04 得分 5

据The   C   Programming   Language中的说法:  
  当向一个函数传递多维数组时,“一般而言,除第一维可以不指定大小外,其余各维都必须明确指定大小”。  
  对于上例:  
  1)void   fun   (int   par[9][9]);  
  或   void   fun   (int   par[][9]);  
  或   void   fun   (int   (*par)[9]);  
  都可以(对编译器而言都一样)。  
  2)由于C对数组的顺序存储特性,实际上可以通过降维来访问原数组。  
  void   fun   (int   *par);  
  再通过与楼上相似的方法处理。Top

8 楼xboy(无薇不至)回复于 2001-12-08 20:45:36 得分 5

用**p并不能得到二维数组的头指针!  
  可以用如下方式:  
    fun   (int   par[9][9]);  
    fun   (int   par[][9]);  
    fun   (int   (*par)[9]);  
  如果一定要用**p那么用new开辟空间好啦:  
  *p=new   int[n];  
  int   arr[n][n];  
  p=arr;  
  .  
  .  
  .  
  :  
  delete   []*p;  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  Top

9 楼Alexeyomux(黑白的背影)回复于 2001-12-08 22:55:59 得分 0

抱歉,分加少了(一开始没注意看到可以给贴子加分,因为是第一次),现在又不能再加了,下次一定加倍感谢。谢谢!Top

相关问题

  • 怎样传递二维数组?
  • 请问怎样传递二维数组到函数?
  • vb中怎么传递二维数组
  • 关于二维数组的传递
  • 怎样动态创建二维数组?
  • 怎样定义二维的Variant数组?
  • 怎样new一个二维数组?
  • 怎样new一个二维数组?
  • 怎样使用动态二维数组?
  • 怎样释放 二维数组

关键词

  • 函数
  • 转换
  • 结构
  • 数组
  • par
  • 二维
  • 参数
  • 强制转换
  • fun
  • 访问

得分解答快速导航

  • 帖主:Alexeyomux
  • kingfish
  • JiangJiayan
  • xboy

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo