A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

就比如定义一个二维数组char a[10][10],下面一个函数fun()需要用到这个二维函数的第一行,也就是a[0][0]~a[0][9]的数值,那么这个函数fun()括号里面应该怎样书写才能实现这个功能。求c的大神能帮助下

评分

参与人数 1技术分 +1 收起 理由
wanzhu159 + 1

查看全部评分

6 个回复

正序浏览
在你的函数的参数列表中可以这样写一个参数,   char (*p)[]
它就可以存放二维数组的每一行,比如  p[i] 就是第 i 行
原理就是二维数组中的每一行都是一维数组,用指针p指向二维数组中的第一个一维数组的首地址
回复 使用道具 举报
另一种书写方式
  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-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. }
复制代码
回复 使用道具 举报 1 0
数组就是指针,直接传就好了,因为数组就是个指向他的第一个元素,很so easy的,还有什么不懂的可以回复我,我会给你详细的解答
回复 使用道具 举报
可能你没理解到我的意思
请看下面一段代码
  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. }
复制代码

意思就是说我想传一个字符串进去,很明显一个字符串就是这个二维数组的一行,不知道你是否明白我的意思

评分

参与人数 1技术分 +1 收起 理由
wanzhu159 + 1

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
wanzhu159 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马