文章标题
来源:互联网 发布:淘宝swot分析矩阵图 编辑:程序博客网 时间:2024/06/18 10:37
转自:http://hi.baidu.com/outsmile/blog/item/38db95ede27206d2b31cb11d.html
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不至于再在这上面浪费时间。
正文:
首先,我引用了谭浩强先生编著的《C程序设计》上面的一节原文,它简要介绍了如何
将二维数组作为参数传递,原文如下(略有改变,请原谅):
[原文开始]
可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的: void Func(int array[][]); 因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多 少列,不能只指定一维而不指定第二维,下面写法是错误的: void Func(int array[3][]);实参数组维数可以大于形参数组,例如实参数组定义为: void Func(int array[3][10]); 而形参数组定义为: int array[5][10]; 这时形参数组只取实参数组的一部分,其余部分不起作用。
[原文结束]
大家可以看到,将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的,但是不能省略第二维或者更高维的大小,这是由编译器原理限制的。大家在学编译原理这么课程的时候知道编译器是这样处理数组的:
对于数组 int p[m][n];
如果要取p[i][j]的值(i>=0 && i
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 位运算之左移右移运算之详解
- opencv学习笔记(二十六)直方图有关的操作
- 图解项目管理【基础】
- 【算法】数据结构与算法分析学习笔记——各类二叉查找树的吐血整理
- POJ 3573 I18n 可能会
- 文章标题
- mybatis学习指南--xml文件方式篇
- [计算几何]Matrices&Linear Systems:Tuples
- atexit注册函数
- CSDN日报20170219——《程序员的沟通之痛》
- 20170219 night
- iOS 字典转模型高级实现
- CSS属性之字体属性
- 学习《core java》记录 -- 第四章 Objects and Classes