CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

请问C语言函数能返回针向二维数组的指针吗,能给个例子吗,先谢了。

楼主yckyck()2003-08-03 22:37:33 在 C/C++ / C语言 提问

int   a[5][5];  
  ??fun(void)  
  {  
       
      return   ?;  
  }  
   
   
  void   main()  
  {  
         
        int   (*p)[5];  
        p=fun();  
  } 问题点数:30、回复次数:9Top

1 楼yckyck()回复于 2003-08-03 22:47:54 得分 0

help   meTop

2 楼guoqing89383859(国庆)回复于 2003-08-03 23:22:09 得分 0

int   a[5][5];  
  int   *fun()  
  {  
      return   a;  
  }  
   
  void   main()  
  {  
   
      int   *p;  
      int   i,j,x=0;  
      for(i=0;i<5;i++)  
          for(j=0;j<5;j++)  
              a[i][j]=x++;  
      p=fun();  
      for(i=0;i<5;i++)  
          for(j=0;j<5;j++)  
              printf("%d",*((p+i)+j));  
      scanf("%d",i);  
  }Top

3 楼huigll(会)回复于 2003-08-03 23:35:57 得分 30

#include   <stdio.h>  
  #include   <malloc.h>  
  #define   N   5  
  #define   M   5  
  int   **fun(void);  
  int   main()  
  {  
  int   **p,i,j;  
  p=fun();  
  for(i=0;i<N;i++)  
  {  
  for(j=0;j<M;j++)  
  printf("%6d",p[i][j]);  
  printf("\n");  
  }  
  for(i=0;i<N;i++)  
  free(p[i]);  
  free(p);  
  return   0;  
  }  
  int   **fun()  
  {  
  int   **p,i,j;  
  p=(int   **)malloc(sizeof(int)*M);  
  for(i=0;i<N;i++)  
  p[i]=(int   *)malloc(sizeof(int)*M);  
  for(i=0;i<N;i++)  
  {  
  for(j=0;j<M;j++)  
  p[i][j]=(i+1)*(j+1);  
  }  
  return   p;  
  }  
  Top

4 楼guoqing89383859(国庆)回复于 2003-08-04 00:07:29 得分 0

不好意思,好就不用c了  
  用指针输出二维数组的句子有错误,你在查查吧Top

5 楼ZZH1983(ZZH)回复于 2003-08-04 09:54:09 得分 0

int   a[2][2]   =   {   1,   2,   3,   4   };  
  int   *fun(void)  
  {  
      return   &a[0][0];  
  }  
   
   
  void   main()  
  {  
        int   *p;  
        p=fun();  
  }  
  Top

6 楼Riemann()回复于 2003-08-04 11:43:28 得分 0

偶的做法与huigll一样。Top

7 楼ckp(surge)回复于 2003-08-04 12:21:15 得分 0

不好意思,里面还是用了C++的代码,不过数组部分和C一致。  
  #include   <iostream>  
  using   namespace   std;  
   
  main()  
  {  
  int   a[2][2]   =   {1,   2,   3,   4};  
  int   *pa=&a[0][0];  
   
  cout   <<   *pa++   <<   endl;  
  cout   <<   *pa++   <<   endl;  
  cout   <<   *pa++   <<   endl;  
  cout   <<   *pa++   <<   endl;  
  }Top

8 楼happyliyilei(莞风)回复于 2003-08-04 12:26:37 得分 0

把iostream.h   改成   stdio.h  
  把cout   改成用   printf就成了Top

9 楼fwinfwin(彩虹沙漠随风飘飘)回复于 2003-08-04 12:32:56 得分 0

就算二维数组的指针和普通的指针是一样的  
  有这必要吗?  
  你直接  
  a[5][5];  
  int*   p;  
  p=a;  
  p就是a的指针了  
  只是  
  a[i][j]编译时就转化为*(a+5*i+j)  
  c数组使用的其实就是指针,数组形式只在编译时有效  
  Top

相关问题

  • c++中如何传递二维数组,函数接口?
  • 在函数中如何使用二维数组作参数
  • 请问怎样传递二维数组到函数?
  • 如果函数参数是二维数组该怎么传?
  • 函数形参中含的二维数组是成a[ ] [ ]行不行?
  • 可不可以使用二维数组在 ReadFile 函数里?
  • 二维数组作参数传递给函数
  • 很笨..函数怎么实现用打印二维数组?
  • 关于二维数组作为函数的参数的问题。
  • 二维数组做函数参数如何写?

关键词

  • fun
  • main
  • define

得分解答快速导航

  • 帖主:yckyck
  • huigll

相关链接

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

广告也精彩

反馈

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