大小变化的二维数组作为参数传送时候,只能用指针么?解决思路
大小变化的二维数组作为参数传送时候,只能用指针么?
大小变化的二维数组作为参数传送时候,只能用指针么?
貌似只有这个办法。
若用指针,用了例如int**指针,在传递的实参就必需是int**类型,而我的却是int a[3][3];编译不过去,怎么办?
谢谢各位大侠。
------解决方案--------------------
int (*p)[3];这种类型的指针
------解决方案--------------------
指针数组
int* pInt[]
------解决方案--------------------
数组引用啊 比如int 函数名(int (&arr[3][3]){ }
但是维数就一定不能忽略
------解决方案--------------------
就像下面这样用指向数组的指针
void test(int (*p)[3])
{
}
void main()
{
int a[3][3];
test(a);
}
------解决方案--------------------
为什么要传送int**指针啊.数组形参会退化为指向数组首元数的指针啊.所以你只要传送进一个元素类型的指针,再加上row和col就可以了啊.不用指针就用数组元素引用做参数
int 函数(int &a[0][0],int row,int col)
------解决方案--------------------
没记错的话在某本书上看到 这样一句话 c++不支持2维数组
比如 :
int *a; a是一个指针它指向一个类型为int的变量的指针
同理:
int a[4][5] 实际上是 a是一个指针 它是指向类型为int[5]的变量的指针
所以解决办法就是 把 类型作为参数:
template <class T>
void fun(T*p,int x,int y)
{
p[x-1][y-1]=5;
cout < <p[x-1][y-1];
}
main()
{
int a[4][5];
int a[3][6]
fun(a,4,5); // 可以传递不同类型的数组了
fun(a,3,6); //
system( "pause ");
}
------解决方案--------------------
还是用vector <vector <int> > 吧。
大小变化的二维数组作为参数传送时候,只能用指针么?
貌似只有这个办法。
若用指针,用了例如int**指针,在传递的实参就必需是int**类型,而我的却是int a[3][3];编译不过去,怎么办?
谢谢各位大侠。
------解决方案--------------------
int (*p)[3];这种类型的指针
------解决方案--------------------
指针数组
int* pInt[]
------解决方案--------------------
数组引用啊 比如int 函数名(int (&arr[3][3]){ }
但是维数就一定不能忽略
------解决方案--------------------
就像下面这样用指向数组的指针
void test(int (*p)[3])
{
}
void main()
{
int a[3][3];
test(a);
}
------解决方案--------------------
为什么要传送int**指针啊.数组形参会退化为指向数组首元数的指针啊.所以你只要传送进一个元素类型的指针,再加上row和col就可以了啊.不用指针就用数组元素引用做参数
int 函数(int &a[0][0],int row,int col)
------解决方案--------------------
没记错的话在某本书上看到 这样一句话 c++不支持2维数组
比如 :
int *a; a是一个指针它指向一个类型为int的变量的指针
同理:
int a[4][5] 实际上是 a是一个指针 它是指向类型为int[5]的变量的指针
所以解决办法就是 把 类型作为参数:
template <class T>
void fun(T*p,int x,int y)
{
p[x-1][y-1]=5;
cout < <p[x-1][y-1];
}
main()
{
int a[4][5];
int a[3][6]
fun(a,4,5); // 可以传递不同类型的数组了
fun(a,3,6); //
system( "pause ");
}
------解决方案--------------------
还是用vector <vector <int> > 吧。