c语言二维数组传递,目前我总结三种方法,以及纠正一个不能使用的方法

/*********************************
* 方法1: 第一维的长度可以不指定 *
* 但必须指定第二维的长度 *
*********************************/
void fun(int a[][], int n, int m)
{
int i, j; for (i = ; i < n; i++)
{
for (j = ; j < m; j++)
printf("%d ", a[i][j]); printf("\n");
}
}
/*****************************************
*方法2: 指向一个有5个元素一维数组的指针 *
*****************************************/
void fun(int(*a)[], int n, int m)
{
int i, j; for (i = ; i < n; i++)
{
for (j = ; j < m; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}

前面两种方法是必须指明所有维数大小或者省略第一维的。还有一种是网上一直有指针的指针来传递,我用vs2013试了一下,代码如下;

void fun(int **a, int n, int m)

这个直接用fun(a,3,3)是出错的

aaarticlea/png;base64,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" alt="" />

所以,我另想一个方法,因为数组是顺序存储,所以我们只要传数组的第一个地址过去就可以得到其他,具体看下面代码

#include<stdio.h>
void fun(int *a, int n, int m)
{
for (int i = ; i < n; i++)
{
for (int j = ; j < m; j++)
{
printf("%d ", *(a + i*m + j));
}
printf("\n");
}
} int main()
{ int a[][] =
{
{ , },
{ , , },
{ }
};
printf("%d %d\n",a,a[]); fun(*a,,);//fun(a[0][0],3,3) fun(a[0],3,3)这三种都可以 return ;
}

c语言二维数组传递的更多相关文章

  1. c++ 二维数组传递

    c++ 二维数组传递 我们在传递二维数组时,对于新手来说,可能会存在某些问题,下面讲解几种传递方法 在讲解如何传递二维数组时,先看看如何动态new 二维数组 // 二维数组动态申请 int row , ...

  2. C语言 二维数组(指针)动态分配和释放(转)

    C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...

  3. C语言二维数组作为函数参数

    设有整型二维数组a[3][4]如下:0   1   2   34   5   6   78   9  10  11 它的定义为:    int a[3][4]={{0,1,2,3},{4,5,6,7} ...

  4. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  5. C语言二维数组作为函数的参数

    前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...

  6. C语言 二维数组复制、清零及打印显示

    #include <stdlib.h> #include <stdio.h> #include <string.h> //二维整型数组打印显示 ],int row, ...

  7. C语言二维数组作业

    一.PTA实验作业 题目1:7-3 出生年 1. 本题PTA提交列表 2. 设计思路 1.声明一个函数different()用来计算一个年份的不同数字个数 2.定义y(y是来计算符合要求的年份的量), ...

  8. C语言二维数组

    上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍二维数 ...

  9. c#二维数组传递与拷贝

    定义 string[,] arr = new string[12, 31] 另一种string[][] ary = new string[5][];相当于一维数组 常量二维数组定义, 用readonl ...

随机推荐

  1. ALV 输入数据时数字缩小一千倍的问题解决

    这个字段后面有三位小数  我输入 1 一回车 就变成了0.001 了 解决方法 DATA: wa_fieldcatalog    TYPE lvc_s_fcat,    "显示数据列内表工作 ...

  2. UVALive 5903 Piece it together(二分图匹配)

    给你一个n*m的矩阵,每个点为'B'或'W'或'.'.然后你有一种碎片.碎片可以旋转,问可否用这种碎片精确覆盖矩阵.N,M<=500 WB  <==碎片 W 题目一看,感觉是精确覆盖(最近 ...

  3. 【Python】range和xrange区别

    转自:http://www.cnblogs.com/zhangjing0502/archive/2012/05/16/2503880.html range    函数说明:range([start,] ...

  4. [页面滚动到底部]jquery $(window).height()取值等于$(document).height()的问题

    问题现象:JSP中头部引用了某个head.jsp,在videoList.jsp中生成片段时如下 实际最终生成的HTML如下: <!DOCTYPE html>没有解析到,原因找到了,先想办法 ...

  5. 【Excel 4.0 函数】REGISTER

    REGISTER.ID 返回指定的 DLL 或 代码资源注册过的函数 ID.如果 DLL 或 代码资源没有注册,这个函数将会注册它们,并返回 注册ID. REGISTER.ID 可以用于工作表(不同于 ...

  6. .NET微信公众号开发-1.0初始微信公众号

    一.前言 微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字.图片.语音.视频的全方位沟通.互动 .形成了一 种主流的线上 ...

  7. Mysql 调用存储过程的两种方式

    一,使用call语句: 如:创建 call 调用: 使用占位符,通过prepare,execute调用:

  8. 初学iPad开发入门

    iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...

  9. 001课-java_web开发入门

    一.Tomcat服务器常见启动问题:(1).Java_home环境变量,由于tomcat服务器的bin目录中的一些jar文件必须使用到java类库,所以必须先配置Java_home环境变量.(2).端 ...

  10. Android Studio 生成Jar包时遇到的gradlew下载问题

    网上介绍说使用gradlew打包jar,可是输入gradlew makeJar后就开始download  XXX.zip,但是等了很久都没有完成.解决办法如下: 原文:http://blog.csdn ...