![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| exitwound |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
Для работи над курсовой о операциях с матрицами решил взять вот етот кусок кода из нета, но кое-что непонятно, даже с Гуглом и книгами, прокоментируйте пжлст хотяби виделенние строки.
Изменять уже поздно, осталось 2 дня до здачи, а практически каждая последующая функция программи опираеться на ЕТО. З.І.: Єсли есть что-то по именно етому - дайте ссилку. спс double ** AllocMatrix(int Rows, int Colomns) { double ** Matrix; try { Matrix = new double * [Rows]; if( Matrix == NULL ) throw 0; for (int i = 0; i < Rows; i++) { Matrix[i] = new double [Colomns]; if( Matrix[i] == NULL ) throw i; } } catch( int index ) { cout << "Ошибка выделения памяти" << endl; for (int i = 0; i < index; i++) { delete [] Matrix[i]; Matrix[i] = NULL; } return NULL; } return Matrix; } |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Это сообщение отредактировал(а) 586 - 16.6.2009, 00:30 |
|||
|
||||
| exitwound |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.5.2009 Репутация: нет Всего: нет |
ОО спасибо, а можне чуть подробний о блоке try,catch, и для чего "две звездоки"(
|
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
Не в оглавлении, а в определении. Возвращает указатель на указатель на значение типа double -------------------- ![]() |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
"Две звёздочки" - это указатель на указатель. Указатель - это переменная такая, которая указывает на другую переменную (а может и не указывать ни на какую переменную, например, где возвращается NULL).
В строке 7 вызывается catch 0. При вызове исключения, цикл for в блоке catch задействован не будет. В строке 11 вызываетя catch i. При вызове исключния, цикл for в блоке catch будет очищать уже выделенную память. Блок catch вызывается только в случае, если возникли проблемы с выделением памяти. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |