C++基础知识——二维数组做函数参数
2016-05-06 21:03
405 查看
1.确定大小的二维数组
void Func(int array[3][10]);
void Func(int array[][10]);
2.不确定大小的二维数组转为二维指针:
从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,所以可以转换成二维指针。
void Func(int **array, int m, int n);
调用时候要把数组名转换位二维指针
Func((int**)a, 3, 3);
获取具体数组元素
*((int*)array + n*i + j);
:其中 (int *)array把array转换成一维数组的存储方式
然后从一维数组里读取元素。
若*(array + n*i + j); 输出:
00000001
00000002
00000003
00000004
00000005
00000006
00000007
00000008
00000009
0000000A
0000000B
0000000C
0000000D
0000000E
0000000F
00000010
若*((int*)array + n*i + j); 输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
3.最方便的还是转为一维指针。
因为在内存中是连续存放的,所以。。。。。
void Func(int *array, int m, int n);
调用时候要把数组名转换位二维指针
Func((int*)a, 3, 3);
获取具体数组元素
*(array + n*i + j);
void Func(int array[3][10]);
void Func(int array[][10]);
2.不确定大小的二维数组转为二维指针:
从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,所以可以转换成二维指针。
void Func(int **array, int m, int n);
调用时候要把数组名转换位二维指针
Func((int**)a, 3, 3);
获取具体数组元素
*((int*)array + n*i + j);
:其中 (int *)array把array转换成一维数组的存储方式
然后从一维数组里读取元素。
若*(array + n*i + j); 输出:
00000001
00000002
00000003
00000004
00000005
00000006
00000007
00000008
00000009
0000000A
0000000B
0000000C
0000000D
0000000E
0000000F
00000010
若*((int*)array + n*i + j); 输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
3.最方便的还是转为一维指针。
因为在内存中是连续存放的,所以。。。。。
void Func(int *array, int m, int n);
调用时候要把数组名转换位二维指针
Func((int*)a, 3, 3);
获取具体数组元素
*(array + n*i + j);
相关文章推荐
- c++继承和多态
- C++第五次上机实验其他作业
- C语言中关于时间的函数
- C++中内置变量初始化及private继承相关
- More Effective C++----(23)考虑变更程序库
- C++第一次作业
- C++实验5——数组分离
- nyoj18 The Triangle
- 如何编译&使用boost库?
- C++STL中vector容器的用法
- C++流格式控制符的使用
- c++编译过程理解
- More Effective C++----(22)考虑用运算符的赋值形式(op=)取代其单独形式(op)
- C++引用类型
- 求旋转数组的最小数字算法的解析以及完整c语言代码实现
- 值得推荐的C/C++框架和库
- UDP socket
- JAVA C# C/C++之比教学:访问控制机制
- c/c++ sizeof运算符详解以及对象大小
- VC++2010下编译STLport,Boost