Эти объекты имеют разные типы
int **pDoubleArray;
int (*ptemp)[10][1];
Таким образом, вы не можете использовать назначение
ptemp = pDoubleArray;
Даже если использовать литье код будет быть недействительным.
Примите во внимание, что это распределение также недействителен
int pDoubleArray = new int*[row];
for (int i=0; i<column; i++) {
pDoubleArray[i] = new int[column];
вместо столбца в состоянии там должен быть использован Row
for (int i=0; i<row; i++) {
Примите во внимание, что вы не инициализировать выделенные массивы ,
Если вам нужно что-то менять, как вы говорите в комментариях, тогда поменяйте каждый элемент друг на друга. Я не вижу смысла создавать указатель на массив.
Например, если вы хотите поменять местами строки 1 и 9, то вы можете просто написать
int *tmp = pDoubleArray[1];
pDoubleArray[1] = pDoubleArray[9];
pDoubleArray[9] = tmp;
Вот показательная программа
#include <iostream>
int main()
{
int row = 10;
int column = 10;
int **p = new int *[row];
for (int i = 0; i < row; i++) p[i] = new int[column];
for (int i = 0; i < column; i++) p[1][i] = i;
for (int i = 0; i < column; i++) p[9][column - i - 1] = i;
for (int i = 0; i < column; i++) std::cout << p[1][i] << ' ';
std::cout << std::endl;
for (int i = 0; i < column; i++) std::cout << p[9][i] << ' ';
std::cout << std::endl;
int *tmp = p[1];
p[1] = p[9];
p[9] = tmp;
for (int i = 0; i < column; i++) std::cout << p[1][i] << ' ';
std::cout << std::endl;
for (int i = 0; i < column; i++) std::cout << p[9][i] << ' ';
std::cout << std::endl;
for (int i = 0; i < row; i++) delete [] p[i];
delete []p;
return 0;
}
Выход
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9
As вы видите, что две строки были заменены.