一维或多维数组作为函数参数的问题
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
/*=====================================
本程序是为了学习而使用的的测试程序,用来
说明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
相关文章推荐
- 作为函数参数的多维数组想到的两个问题
- C++中数组以及多维数组作为函数参数时的一些问题
- 指针数组作为函数参数的使用问题
- C/C++面试题--数组作为函数参数的几个问题
- QT 自定义信号与信号槽方法及解决自定义数据类型或数组作为函数参数的问题
- 一维数组和二位数组作为函数参数进行传递的方式
- 数组作为函数参数时的传递问题
- C语言中实参和形参问题&&函数使用数组作为参数的问题
- 多维数组做函数参数问题
- 学习心得——数组作为函数参数后sizeof获取不到数组在内存中所占字节数的问题
- 函数指针、多维数组作为函数参数
- C++用指针变量作为函数的参数接受数组的值的问题详细总结
- 如何将多维数组作为参数传递给函数?(以二维数组为例)
- 多维数组作为函数参数的形式
- 关于 Numpy 数组作为函数参数的一个小问题
- 关于作为函数参数的多维数组的声明、定义和调用
- QT 自定义信号与信号槽方法及解决自定义数据类型或数组作为函数参数的问题
- c_指针_一维数组名作为函数参数
- 强化C数组作为函数参数-多维数组的本质
- C++用指针变量作为函数的参数接受数组的值的问题的总结