c语言二维数组传递
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语言二维数组传递的更多相关文章
- c++ 二维数组传递
c++ 二维数组传递 我们在传递二维数组时,对于新手来说,可能会存在某些问题,下面讲解几种传递方法 在讲解如何传递二维数组时,先看看如何动态new 二维数组 // 二维数组动态申请 int row , ...
- C语言 二维数组(指针)动态分配和释放(转)
C 二维数组(指针)动态分配和释放 先明确下概念: 所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据.如果我们将总长128位的指令分别按 ...
- 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} ...
- 关于c语言二维数组与指针的个人理解及处理办法。
相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...
- C语言二维数组作为函数的参数
前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...
- C语言 二维数组复制、清零及打印显示
#include <stdlib.h> #include <stdio.h> #include <string.h> //二维整型数组打印显示 ],int row, ...
- C语言二维数组作业
一.PTA实验作业 题目1:7-3 出生年 1. 本题PTA提交列表 2. 设计思路 1.声明一个函数different()用来计算一个年份的不同数字个数 2.定义y(y是来计算符合要求的年份的量), ...
- C语言二维数组
上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍二维数 ...
- c#二维数组传递与拷贝
定义 string[,] arr = new string[12, 31] 另一种string[][] ary = new string[5][];相当于一维数组 常量二维数组定义, 用readonl ...
随机推荐
- WdatePicker组件不显示
突然发现时间组件不显示了,以为是浏览器的问题.在本地服务器测试了一下发现一切正常. 怀疑是前段时间中毒引起的,用工具比对了一下WdatePicker的文件包,发现My97DatePicker.htm这 ...
- Django~Settings.py
配置 数据库 默认sqlite, 支持Mysql,postgresql,oracle 更改时区 查看表结构 .schema (SQLite), display the tables Django cr ...
- Effective C++ -----条款14: 在资源管理类中小心copying行为
复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为. 普遍而常见的RAII class copying行为是:抑制copying(使用私有继承 ...
- rsync实现同步
一.备份客户端: 1.创建/etc/rsyncd.secrets 权限配置600 (写服务器端的账户密码) 2.客户端配置文件: port=873log file=/var/log/rsync.log ...
- $(inherited) "$(SRCROOT) 修改.a文件的路径 --Library Search Paths
$(inherited) "$(SRCROOT)/.a文件所在的文件名" //如果有多个.a文件格式就像这样 $(inherited) "$(SRCROOT)/xxxx& ...
- python基础——定制类
python基础——定制类 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方 ...
- python基础——高阶函数
python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...
- Google 如何修复 TrustManager 实施方式不安全的应用
引用谷歌市场的帮助说明:https://support.google.com/faqs/answer/6346016 本文面向的是发布的应用中 X509TrustManager 接口实施方式不安全的开 ...
- JavaScript基础——使用运算符
JavaScript运算符允许你改变一个变量的值.你已经熟悉了用于赋值给变量的=运算符.JavaScript提供了几种不同的运算符,它们可以划分为两大类:算数运算符和赋值运算符. 1.算数运算符 你可 ...
- MYSQL中'TYPE=MyISAM'错误的解决方案
create 语句后面的TYPE=MyISAM TYPE=MyISAM 和 ENGINE=MyISAM 都是设置数据库存储引擎的语句 ,(老版本的MySQL使用TYPE而不是ENGINE(例如,TYP ...