![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| oceanton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.3.2007 Репутация: нет Всего: нет |
Как сделать, чтобы массив был произвольным, а не 3 на 5 ? нужна матрица типа matr[stroki][stolbci] где stroki и stolbci вводил бы пользователь заранее. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| oceanton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.3.2007 Репутация: нет Всего: нет |
а так для одномерного пойдет? |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
Это сообщение отредактировал(а) vinter - 20.3.2007, 14:18 |
|||
|
||||
| seacat79 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: 1 Всего: 1 |
я может ошибаюсь, но по моему так работать не будет правильно вот так:
|
||||
|
|||||
| oceanton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.3.2007 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) oceanton - 20.3.2007, 15:19 |
|||
|
||||
| Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
||||
|
||||
| seacat79 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: 1 Всего: 1 |
Упс, не работает! А почему? А потому что m[j][i] интерпретируется как *(*(m+i)+j) ( по крайней мере так написано в описании языка ). И это корректно работает, только есть компилятор знает вторую размерность массива. А если не знает, то надо умножение и сложение производить самостоятельно При использовании new вообще не гарантировано, что элементы массива будут распологаться друг за другом, так что ссылаться на элементы в виде [][] не имеет никакого смысла И еще, попробуйте передать в функцию
например такой массив a[2][2] и если не трудно напишите как вы это делаете, а то я так и не смог придумать записи для преобразования int[][] в int** это не мешает ему распологаться в памяти последовательно |
|||
|
||||
| Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
да нет, всё работает. С GNU компайлером
|
|||
|
||||
| seacat79 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: 1 Всего: 1 |
Если речь идет о том, что компилируется тогда да А вот насчет работать
У меня не работает А под gdb вообще получаем SEGMENTATION FAULT Это сообщение отредактировал(а) seacat79 - 20.3.2007, 16:04 |
|||
|
||||
| Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
seacat79, ты прав. Чо то я прогнал
Не будет работать конечно. перепутал. Извиняюсь за недоразумение. |
|||
|
||||
| vinter |
|
||||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
так и нечего придумывать! если в аргументах ** то будьте добры передавайте двойной указатель, а если надо передавать двумерный массив то и в аргументах указывайте его!
скорее даже гарантировано что не будут..
еще как имеет p[i][j] ~ *(*(p + i) + j) |
||||||
|
|||||||
| seacat79 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: 1 Всего: 1 |
||||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
oceanton,
seacat79, Goryachev, дружно идём сюда и читаем что такое указатель, что такое массив указателей и чем он отличается от "псевдодвухмерного" линейного массива с константными размерностями... развели тут сплетней из-за элементарной проги... добавить к тому, что написано по вышеуказанной ссылке могу только то, что компилятор умный и оператор [] делает разные вещи в зависимости от того, к чему он применяется...точно так же как * может применятся как для разыменования, так и для умножения -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |