您的位置:首页 > 其它

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

2011-08-05 16:23 351 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: