Уникальное имя для двумерного динамического массива в функции
Всем привет, не могу решить задачу, которую сам придумал... Вызывается функция и выводится матрица. Задача вот какая: написать программу, которая спрашивает сколько строк и колонок в матрице, далее спрашивает сколько матриц. Потом я хочу складывать все матрицы (до этого я ещё не дошёл). Саму матрицу я создаю через функцию. В этой функции создаётся динамический массив, чтобы можно было в нём задавать количество строк и столбцов. После создания матрицы ( тобишь это массив с адресами ), функция повторяется и создаётся ещё матрица ( массив ). Но когда она создаётся, адреса не меняются и значения, которые были в первой матрице меняются, а их адреса нет. Тобишь я не могу обратиться к первой матрице. Вопрос: как можно это обыграть ? Единственная идея, которая пришла мне в голову - это менять имя массива, но я не знаю как это осуществить. Возможно есть другие решения ?
#include <iostream>
#include <ctime>
using namespace std;
int Foo1(int rows, int cols, int count) {
int **arr = new int* [rows];
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols];
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
arr[i][j] = rand() % 100;
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << arr[i][j] << '\t';
}
cout << endl;
}
int countstring = 10 * rows - 10;
char c = '=';
cout << string(countstring, c) << endl;
--count;
if (count == 0) {
return 0;
}
return Foo1(rows,cols,count);
}
int main() {
setlocale(LC_ALL, "ru");
srand(time(NULL));
int rows, cols, count;
cout << "Введите количесвто строк в матрице: ";
cin >> rows;
cout << "Введите количество столбцов в матрице: ";
cin >> cols;
cout << "Введите количество матриц: ";
cin >> count;
Foo1(rows, cols, count);
}