Я хотел создать функцию, которая создает двухмерный динамический массив. поэтому я написал:Функция, которая создает двухмерный динамический массив
#include<iostream>
using namespace std;
void make_mat (double *** , int, int);
int main(){
int m = 3, n = 4;
double **a;
make_mat(&a,m,n);
for (int i = 0; i < m; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
for (int i = 0; i < m; i++){
for (int j = 0; j < m; j++)
cout << a[i][j] << '\t';
cout << endl;
}
return 0;
system("pause");
}
void make_mat(double ***x , int m , int n){
*x = new double *[m];
for (int i = 0; i < m; i++){
*x[i] = new double [n];
}
}
Там нет синтаксических ошибок в кодах, но я получаю следующее сообщение об ошибке после компиляции:
необработанного исключения при 0x003657E6 в ConsoleApplication20.exe: 0xC0000005: нарушение прав доступа место для записи 0xCCCCCCCC.
Полностью это не является хорошим способом создания функции, которая создает двухмерный динамический массив. есть ли какая-нибудь лучшая идея или какая-либо коррекция кода выше?
Определение gloval 'void main()' является незаконным в стандартном C++. Вы должны использовать 'int main()', если нет особых причин использовать нестандартный тип функции main() '. – MikeCAT
ОК я сейчас отредактирую –
Да, есть лучшая идея. Используйте летающий 'std :: vector'. –