指向二维数组的指针如何定义?简略如下:int arrayA[2][3] = { {1, 2 ,3},{11,22,33}};int arrayB[2][5] = {{5,6,7,8,9},{55,66,77,88,99} };现在我想定义一个变量array,当条件A成立时,array指向arrayA,当条件B成立时,array指向arrayB.刚才定义成双指针int ** array 形势,编译错误.我的想法是:if (A条件成立) { array = arrayA;} else { array = arrayB;}然后对array[i][j] 进行操作.该如何定义好?

问题描述:

指向二维数组的指针如何定义?
简略如下:
int arrayA[2][3] = { {1, 2 ,3},{11,22,33}};
int arrayB[2][5] = {{5,6,7,8,9},{55,66,77,88,99} };
现在我想定义一个变量array,当条件A成立时,array指向arrayA,当条件B成立时,array指向arrayB.
刚才定义成双指针int ** array 形势,编译错误.
我的想法是:
if (A条件成立) {
array = arrayA;
} else {
array = arrayB;
}
然后对array[i][j] 进行操作.
该如何定义好?

方案一:
int arrayA[2][3] = { {1, 2 ,3},{11,22,33}};
int arrayB[2][5] = {{5,6,7,8,9},{55,66,77,88,99} };
int *array = NULL;
if (A条件成立)
{
array = &arrayA[0][0];
}
else
{
array = &arrayB[0][0];
}
方案二:
这种方式是定义指向二维数组的行的数组指针,列必须相同,行可以不同,所以这里要定义两个数组指针变量!
int arrayA[2][3] = { {1, 2 ,3},{11,22,33}};
int arrayB[2][5] = {{5,6,7,8,9},{55,66,77,88,99}};
int (*array1)[3] = NULL;
int (*array2)[5] = NULL;
if (A条件成立)
{
array1 = arrayA;
}
else
{
array2 = arrayB;
}
如果你定义的两数组列一样, 即:
int arrayA[2][5] = { {1, 2 ,3},{11,22,33}};
int arrayB[2][5] = {{5,6,7,8,9},{55,66,77,88,99}};
那么就可以:
int (*array)[5] = NULL;
if (A条件成立)
{
array = arrayA;
}
else
{
array = arrayB;
}