关于作为函数参数的多维数组的声明、定义和调用
2016-02-27 20:43
471 查看
编写C代码的过程中,有时需要在主调函数中将多维数组传给被调函数,此时数组在被调函数中需要充当一次形参和一次实参。在这里,我使用myarray[3][3]作为所讨论的数组。
网上已经给出很多例子来说明当调用和被调用函数都在一个源文件中的情形。在这种情况下,被调用函数形参中不需要指定所调用数组的第一个下标,但需要指定第二个下标,也就是说用myarray[][3]这种形式即可。
然而,当调用和被调用函数不在一个文件中时,就需要用特定的方式来处理了,下面给出例子:
该被调函数处于file1.c中,在file1.h中对其进行声明:
在主函数main中进行调用时,调用函数中的实参中无需使用下标,直接用数组名即可。
对上面的例子需要解释的时,被调函数中的形参使用了 int (*myarray)[3] 这种形式,显式地把多维数组表达成一个指针数组。这种方式的好处就是在声明中可以很简单的用 void print_my_array(int (*)[3]); 来声明。
网上已经给出很多例子来说明当调用和被调用函数都在一个源文件中的情形。在这种情况下,被调用函数形参中不需要指定所调用数组的第一个下标,但需要指定第二个下标,也就是说用myarray[][3]这种形式即可。
然而,当调用和被调用函数不在一个文件中时,就需要用特定的方式来处理了,下面给出例子:
#include "file1.h" 1 void print_my_array(int (*myarray)[3]) { for (int i=0; i<=2; ++i) { printf("%5d %5d %5d\n", myarray[i][0], myarray[i][1], myarray[i][2]); } }
该被调函数处于file1.c中,在file1.h中对其进行声明:
#ifndef __file1_h #define __file1_h #include <stdio.h> void print_my_array(int (*)[3]); #endif
在主函数main中进行调用时,调用函数中的实参中无需使用下标,直接用数组名即可。
#include <stdio.h> #include "file1.h" int main(int argc, char *argv[]) { int myarray[3][3]={{1,2,3},{4,5,6},{7,8,9}}; print_my_array(myarray); return 0; }
对上面的例子需要解释的时,被调函数中的形参使用了 int (*myarray)[3] 这种形式,显式地把多维数组表达成一个指针数组。这种方式的好处就是在声明中可以很简单的用 void print_my_array(int (*)[3]); 来声明。
相关文章推荐
- 模拟malloc - free 函数动态分配内存
- hibernate连接数据库乱码问题
- ubuntu中vim配置
- 奥秘之家北京崇文门店实习------引导员
- ACJoy B Queue at the School
- jQuery-源码阅读,pushStack()入栈方法
- 如何使Web应用程序在结束调试的时候VS内嵌IIS不自动退出
- iOS的3D Touch学习
- Android图片压缩库——libjpeg-turbo
- poj 3252
- 面向对象的学习笔记
- C语言中字符串的复制与memcpy函数
- 深度学习材料:从感知机到深度网络A Deep Learning Tutorial: From Perceptrons to Deep Networks
- Path Sum
- 调试寄存器(debug registers, DRx)理论及实践
- 编译测试 LLVM与LLDB
- 中国计算机学会CCF推荐国际学术会议和期刊目录(PDF版,2015年)
- 《机电传动控制》第一周作业
- Hadoop中两表JOIN的处理方法
- leetcode 332. Reconstruct Itinerary