一维或多维数组作为函数参数的问题

C语言中的多维数组是不能完全做为参数来使用的,因为它是受限制的:

/*=====================================
本程序是为了学习而使用的的测试程序,用来
说明C语言中的一些学习误区,对C语言的某些
知识作详细的讲解
=======================================*/
#include <stdio.h>
#include <stdlib.h>

void fun1(int m[2][3])
{
 printf("第一个测试值为:%d/n",m[0][1]);
}

void fun2(int *m,int weight,int height)
{
   printf("第二个测试值为:%d/n",m[weight*1+2]);
}
void main()
{
 /*======================================================
 主题:C语言中,一维或多维数组作为函数参数的问题
 内容:


 1.向函数传递一个一维数组
 方法一:增加一个参数来说明数组的数目
 方法二:给数组最后一个元素一个特殊的值


 2.向函数传递一个多维数组
 C语言中没有办法向函数传递一个普通的多维数组,因为我们
 必需知道每一维的具体长度,以便为地址运算提供正确的单位,
 我们无法在实参和形参之间交流这种数据,你必须提供左边一
 维外的所有维数


 方法一:fun(int m[20][30]) 这将使函数只能处理20行30列的数组
 注:多维数组的第一维不必显示的写明,我们只要有足够的信息也可


 方法二:fun(int m[][30]) 或 fun(int (*m)[30])
 这里第一维没有限制


 方法三:fun(int **m)(用于二维数组)使用Iliffer向量


 方法四:放弃多维数组,提供自己的下标方式
 如二维数组可以这么定义成一维数组char  array[row_size*i+j];
 三维或更多的数组应当分解成几维或更少的数组

 由于有些方法上一个程序已经提到,这个只列举第二点的方法一与
 方法四.
 ========================================================*/
 int m[2][3] = {{0,1,2},{3,4,5}};

 fun1(m);   //形参和实参数组的维数完全相等

 int n[2*3] = {0,1,2,3,4,5};

 fun2(n,2,3);   //同样的三维和多维数组也可以这么分解
}

源码的运行结果:

第一个测试值为:1

第一个测试值为:4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值