由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 也问个二维数组的函数传递问题
相关主题
搞不定,不得不问,一维数组跟二维数组的问题[合集] 一个vector的问题
在C/Fortran之间传递2维数组问个模板函数的问题
请教一个2维动态矩阵的问题T[ ][ ] vs T **
[合集] 一道C++的面试题,双黄包求答案 (转载)Java数组怎么样能参数传递 (转载)
问个技术问题: c++ 调试怎么显示二维数组?比如Visual Studio问题请教
perl二维数组一问关于二维矩阵的C的问题
请问C#里面,如何对N个数组设置循环访问?请教大虾们一个C++返回值问题
关于java的二维数组的问题career问题
相关话题的讨论汇总
话题: array话题: int话题: func话题: array2话题: 函数
进入Programming版参与讨论
1 (共1页)
e******e
发帖数: 458
1
1. func(int (&array)[3][4]);
2. func(int (*array)[3][4]);
3. func(int array[3][4]);
这几个函数是等价的吗?有什么区别吗?
特别是array[3][4]到底是传的指针,还是说在在传给func的时候,已经在heap或者
stack上分配了size(int)*3*4的空间了?
谢谢。
X****r
发帖数: 3557
2
这几个函数各不相同。1的参数是对3x4的二维int数组的引用,2的参数是
指向3x4的二维int数组的指针,而3的参数是对长度为4的一维数组的指针,
因为函数形参出现T[]类型的时候会作为T*来处理。见C++ 2003 8.3.5
3. ... After determining the type of each parameter,
any parameter of type “array of T” or “function
returning T” is adjusted to be “pointer to T” or
“pointer to function returning T,” respectively.
比如
void func1(int (&array)[3][4]) {}
void func2(int (*array)[3][4]) {}
void func3(int array[3][4]) {}
int main() {
int array[3][4];
func1(array);
func2(&array);
func3(array);
int array2[2][4];
// func1(array2) or func2(&array2) wouldn't compile
func3(array2);
}

【在 e******e 的大作中提到】
: 1. func(int (&array)[3][4]);
: 2. func(int (*array)[3][4]);
: 3. func(int array[3][4]);
: 这几个函数是等价的吗?有什么区别吗?
: 特别是array[3][4]到底是传的指针,还是说在在传给func的时候,已经在heap或者
: stack上分配了size(int)*3*4的空间了?
: 谢谢。

1 (共1页)
进入Programming版参与讨论
相关主题
career问题问个技术问题: c++ 调试怎么显示二维数组?比如Visual Studio
Matlab中,如何沿着某个方向读取二维矩阵中的数据perl二维数组一问
关于matlab画图的一个小问题请问C#里面,如何对N个数组设置循环访问?
一个python问题:mdb->二维list->excel关于java的二维数组的问题
搞不定,不得不问,一维数组跟二维数组的问题[合集] 一个vector的问题
在C/Fortran之间传递2维数组问个模板函数的问题
请教一个2维动态矩阵的问题T[ ][ ] vs T **
[合集] 一道C++的面试题,双黄包求答案 (转载)Java数组怎么样能参数传递 (转载)
相关话题的讨论汇总
话题: array话题: int话题: func话题: array2话题: 函数