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. maven加载本地oracle的JDBC驱动

    转载自:http://blog.csdn.net/qicyt1812/article/details/13019933 由于oracle商业版权问题,maven不能通过中心资源库直接下载jar包,如果 ...

  2. mybatis一对多查询

    18 <!-- 19 方式一:嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集 20 封装联表查询的数据(去除重复的数据) 21 select * from class c, teacher ...

  3. 【XLL API 函数】 xlGetInst

    返回正在调用 DLL 的 Excel 实例的实例句柄. 原型 Excel4(xlGetInst, LPXLOPER pxRes, 0); /* returns low part only */ Exc ...

  4. Java常用工具类题库

    一.    填空题 在Java中每个Java基本类型在java.lang包中都在一个相应的包装类,把基本类型数据转换为对象,其中包装类Integer是___Number__的直接子类. 包装类Inte ...

  5. Http返回码

    HTTP协议状态码表示的意思主要分为五类 ,大体是 :   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~   1×× 保留    2×× 表示请求成功地接收    3×× 为完成请求客户需 ...

  6. 红外解码编码学习----verilog

    在设计中运用红外遥控器可以很好的解决按键缺少的问题,还可以方便的控制产品. 红外发射部分: 红外发射管: 判断红外发射管的好坏 : 电路原理图: 接收部分: 传输的NEC协议: 本实验电路: veri ...

  7. Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- ApiWrapper

    前面两片文章讲解了通过AIDL和Messenger两种方式实现Android IPC.而本文所讲的并不是第三种IPC方式,而是对前面两种方式进行封装,这样我们就不用直接把Aidl文件,java文件拷贝 ...

  8. CLR via C#学习笔记---类型

    类的内存分配:http://www.cnblogs.com/JimmyZhang/archive/2008/01/31/1059383.html 关键字: abstract     (类)该类不能构建 ...

  9. CLR via C#(06)- 构造器

    最近忙着看新还珠,好几天不学习了.玩物丧志啊,罪过罪过. 今天总结的是类构造器的知识,其实这方面的文章蛮多的,可还是觉得亲自写一下对自己的思考和认识会有提高. 对于构造器,大家应该都不陌生,它主要是用 ...

  10. Asp.Net - 9.socket(聊天室)

    9.1 Socket相关概念 IP地址 每台联网的电脑都有一个唯一的IP地址. 长度32位,分为四段,每段8位,用十进制数字表示,每段范围 0 ~ 255 特殊IP:127.0.0.1 用户本地网卡测 ...