黑马程序员技术交流社区

标题: C关于如何将一个二维数组的一行传入一个自定义函数的问题 [打印本页]

作者: Sniper_YJ    时间: 2014-5-15 10:11
标题: C关于如何将一个二维数组的一行传入一个自定义函数的问题
就比如定义一个二维数组char a[10][10],下面一个函数fun()需要用到这个二维函数的第一行,也就是a[0][0]~a[0][9]的数值,那么这个函数fun()括号里面应该怎样书写才能实现这个功能。求c的大神能帮助下

作者: ios风痕    时间: 2014-5-15 12:26
在fun()函数括号里只需写数组名就行,至于你要用到的数组char a[10][10]的第一行,在fun()函数里可以定义一个指针变量,利用一个for循环进行调用
  1. for(i=0,j=0;j<=10;j++)
  2. {
  3.   //在这里可以输入具体的操作
  4. }
复制代码

作者: Sniper_YJ    时间: 2014-5-15 12:35
可能你没理解到我的意思
请看下面一段代码
  1. #include<stdio.h>
  2. void fun(//不知道写什么)//比如这个函数是用来对一个字符串数组进行排序的
  3. {
  4.      //进行排序
  5. }
  6. int main()
  7. {
  8.      char  a[10][10];//定义一个二维数组
  9.      for(int i=0;i<10;i++)
  10.      {
  11.            scanf("%s",a[i]);//二维数组的每一行储存一个字符串
  12.      }
  13.      fun(//这里不知道写什么);
  14. }
复制代码

意思就是说我想传一个字符串进去,很明显一个字符串就是这个二维数组的一行,不知道你是否明白我的意思
作者: 奇迹    时间: 2014-5-15 13:11
数组就是指针,直接传就好了,因为数组就是个指向他的第一个元素,很so easy的,还有什么不懂的可以回复我,我会给你详细的解答
作者: ⒈心只霸占沵    时间: 2014-5-19 14:11
本帖最后由 ⒈心只霸占沵 于 2014-5-19 14:14 编辑
  1. #include <stdio.h>

  2. int main()
  3. {
  4.   char a[10][10];
  5.   fun(a[0]);
  6. }
  7. //数组传的都是指针
  8. void fun(char a1[])
  9. {
  10.    //操作
  11. }
复制代码

作者: Dr_。Zeor`    时间: 2014-5-19 20:13
另一种书写方式
  1. #include <QCoreApplication>

  2. void func(char s[2][2])
  3. {
  4.     for(int i=0;i<2;++i)
  5.         for(int j=0;j<2;++j)
  6.         {
  7.             printf("%c",s[i][j]);
  8.         }
  9. }

  10. int main(int argc, char *argv[])
  11. {
  12.     QCoreApplication a(argc, argv);

  13.     char s[2][2]={{'0','1'},{'3','4'}};

  14.     func(s);


  15.     return a.exec();
  16. }
复制代码




作者: 葬花桥    时间: 2014-5-20 11:13
在你的函数的参数列表中可以这样写一个参数,   char (*p)[]
它就可以存放二维数组的每一行,比如  p[i] 就是第 i 行
原理就是二维数组中的每一行都是一维数组,用指针p指向二维数组中的第一个一维数组的首地址




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2