C/C++ 二维数组作为函数参数
来源:互联网 发布:mac本地文件夹在哪里 编辑:程序博客网 时间:2024/06/06 22:07
有两种类型的二维数组:
维数固定
这一类的数组存放在栈上,是连续存储的。任意维度固定的多维数组都可以看做是一维数组,可以用a[i+j*n]的形式来访问。
int ia[2][2] = {2,3,4,5}; //4个元素时连续排列的内存段//void f(int p[][2], int row, int col )//这种方式必须事先知道除第一维以外的维度的大小,不灵活void f(int *p , int row, int col )//转化为一维数组来访问{for(int i = 0; i < row; i++){for(int j =0 ;j < col; j++){cout<<p[i*col+j]<<" ";}}cout<<endl;}
下面的代码是错误的:
int ** p= ia;//ia的类型是char (*)[2],而不是**int
这是因为,**p指向首地址,因为int **p一次解引用为地址指针,而非堆上的指向数组的指针,所以二次解引用会出错。
动态数组
这类数组存放在堆上。只有每行内是连续排列,各行并不一定连续排列。
int **p = new int*[2]; //只有每行内是连续排列,各行并不一定连续排列 for ( int i = 0; i < 2; i++ ) { p[i] = new int[2]; } for ( int i = 0; i < 2; i++ ) { for ( int j = 0; j < 2; j++ ) { p[i][j] = ia[i][j]; } }
这类数组的访问,可以传递多维指针(这里是二维**p)和维度,直接用a[i][j]访问。
void f(int **p , int row, int col ){for(int i = 0; i < row; i++){for(int j =0 ;j < col; j++){cout<<p[i][j]<<" ";}}cout<<endl;}
- C/C++ 二维数组作为函数参数
- 二维数组作为函数参数(C语言)
- c/c++:二维数组作为参数传递
- 二维数组作为函数参数传递剖析(C语言)
- C/C++二维数组作为函数参数传递
- C/C++ 任意大小的二维数组作为函数参数
- C语言二维数组作为函数的参数
- C语言二维数组作为函数参数传递
- 二维数组作为函数参数传递剖析(C语言)
- 二维数组作为函数参数传递剖析(C语言)总结
- 苦学c语言(1)二维数组作为函数参数
- C语言二维数组作为函数的参数
- C语言二维数组作为函数的参数
- 二维数组作为函数参数传递(C++)
- C语言二维数组作为函数参数传递
- C语言二维数组作为函数的参数
- [总结]C语言二维数组作为函数的参数
- [总结]C语言二维数组作为函数的参数
- CentOS安装erlang
- 状态机处理文本
- spring整合hibernate中,利用单元测试结果无错却无法保留到数据库中
- 我的大学
- android基础(开发环境搭建)
- C/C++ 二维数组作为函数参数
- ubuntu 安装java6
- Oracle相关知识点关键词
- Java中fanilize()方法讲解
- 绿城离职员工万言书全文,不看你后悔!当今很少有此类文言文!
- GANTT图和PERT图
- java与C++的区别之基本数据类型
- 分治+贪心
- 路径