指向二维数组的指针如何定义?

简略如下:
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;
}
温馨提示:答案为网友推荐,仅供参考
相似回答