Я хочу иметь функцию, которая инициализирует динамические 2d массивы в СРР, как показано нижемногомерные инициализации массива с помощью указателей
void initArrays(int n,double **a,double **b,double **c) {
a = new double*[n];
for (int i = 0; i < n; i++)
a[i] = new double[n];
b = new double*[n];
for (int i = 0; i < n; i++)
b[i] = new double[n];
c = new double*[n];
for (int i = 0; i < n; i++)
c[i] = new double[n];
}
Вызов функции завершается, но это не инициализировать указатели, которые я даю в качестве аргументов функции. Например, если я называю эту функцию в главном
double **x,**y,**z;
initArrays(3,x,y,z);
Я не могу получить доступ к
x[0][0]
, что я делаю неправильно здесь?
Возможный дубликат [Как объявить 2-й массив в C++ с использованием новых?] (Http://stackoverflow.com/questions/936687/how-do-i-declare-a-2d-array-in-c -using-new) – CoryKramer
Это работает, если init выполняется в основном, как описано в вопросе выше. Это не удалось, когда я переместил init в функцию, которая вызывается в главном – AlphaWolf
Не используйте 'new' в C++, у нас есть' std :: vector' и 'std :: unique_ptr'. Не используйте массивы массивов как 2D-массив, скорее используйте 1D-массив с размером 'x * y' и сопоставьте доступ. – Fytch