4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Многомерный массив и массив массивов20.12.2012, 09:24. Показов 5482. Ответов 66
Метки нет (Все метки)
На паскале это синонимы. Например, всё валидно:
0
|
20.12.2012, 09:24 | |
Ответы с готовыми решениями:
66
Многомерный массив. С++ Многомерный массив Многомерный массив многомерный массив |
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
20.12.2012, 11:30 | 21 |
palva, не понял. Вы сказали, что
Но в С нет массива массивов. Да, можно объявить массив указателей, но это именно массив указателей.
0
|
20.12.2012, 11:40 | 22 |
char это не объект и операции * и [] имеют в языке предопределенное значение, хотя их можно переопределить. Массив в языке всегда реализуется как указатель на первый элемент, а элементы массива располагаются в памяти последовательно. Массив массивов это массив указателей (указатели расположены в памяти последовательно). Двумерный массив это последовательное расположение в памяти его элементов и никаких дополнительных указателей. Если при имени массива указана только часть индексов (или их вовсе нет), то компилятор интерпретирует это как указатель.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 11:52 | 23 |
там поправка
Двумерный, трехмерный, тысячемерный - без разницы.
0
|
20.12.2012, 11:54 | 24 | |||||
Хотя, я не совсем прав. Если не хватает только одного индекса, то интерпретируется как указатель. Попробовал такой пример:
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 12:16 | 25 |
Не по теме: Сколько угодно называйте бегемота гиппопотамом, от этого он не перестанет быть бегемотом если массив содержит массив указателей, то значит он многомерный массив и хоть убейтесь об стену, ничего не изменится
0
|
20.12.2012, 12:24 | 26 |
Ну можете так считать. В таком массиве не определен диапазон второго индекса. В C# это особый сорт двумерных массивов.
Ну а C существуют настоящие массивы, реализация которых не требует хранения в памяти указателей на каждую строку массива. В них все строки имеют одинаковую длину.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 12:31 | 27 |
Что значит могу так считать
А вы докажите, что массив, который содержит массив - это не массив массивов.
0
|
20.12.2012, 12:47 | 28 |
Это значит, что это вопрос терминологии, с которым я не берусь спорить. Я готов общаться с вами на вашем языке.
Я могу доказать обратное. Если массив содержит массив, то все его элементы содержат некоторый массив, (поскольку элементы массива имеют один и тот же тип.) Следовательно, это массив массивов.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 12:54 | 29 |
стоило ТС шум поднимать. Вот и выводы можно сделать В С/С++ есть понятие массива массивов.
0
|
20.12.2012, 12:59 | 30 | |||||
Ну вот массив массивов, реализуется конечно с использованием указателей, то есть указатели явно хранятся в памяти и переставлять строки можно переставляя указатели. Это бывает полезно для реализации сортировки строк.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
20.12.2012, 13:55 [ТС] | 31 |
Но и гиппопотамом тоже не перестанет.
Добавлено через 2 минуты Как и в паскале. Но паскаль позволяет писать, как хочешь.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
20.12.2012, 14:39 | 32 |
taras atavin, Короткий ответ прост: потому что С++ это не Паскаль. И не надо сравнивать. Изучайте спокойно язык, а не задавайтесь вопросом: "почему это есть в одном языке, а в другом нет?"
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
20.12.2012, 14:59 [ТС] | 33 |
Я знаю язык и для меня не проблема сделать векторный индекс, интересна именно мотивация Страуструпа.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
20.12.2012, 15:06 | 34 |
мне одно удобно делать в Паскале
другое удобно в С++ Паскаль позволяет писать по другому, но ни в коем случае не как хочешь. Потому что это разные языки и каждый заточен под свои задачи. мотивация Страуструпа у Страуструпа в книжке написана. Там Введение есть
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
20.12.2012, 15:09 [ТС] | 35 |
Что за книжка?
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
20.12.2012, 15:13 | 36 |
Ну думаю она очевидна - совместимость с С - было бы странно, если бы массивы в С++ "работали" иначе, чем в С.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
20.12.2012, 15:18 [ТС] | 37 | ||||||||||
А в чём будет не совместимость? Если
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
20.12.2012, 15:40 | 38 |
taras atavin, и зачем, если есть "неальтернативный" синтаксис? У запятой в С++, как и в С, другое значение, выделять отдельный случай для индексации - ИМХО просто лишняя нагрузка на компилятор, у языка и так грамматика не самая простая. Основной аудитории (знакомым с С) такой способ всё равно вряд ли был нужен. Вообщем, ИМХО, полезность крайне сомнительна. Про совместимость я пожалуй некорректно выразился, просто менять\добавлять что-то в отношении индексации имело бы мало смысла.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
20.12.2012, 15:47 [ТС] | 40 |
На паскале запятая тоже разделяет параметры. И она же разделяет индексы. Но в чём здесь отдельность? Два индекса - это два операнда, операнд есть параметр оператора, запятая на c/c++ разделяет параметры. Где же здесь намёк на отдельный случай?
Добавлено через 45 секунд Оба языка прямо запрещают такой синтаксис.
0
|
20.12.2012, 15:47 | |
20.12.2012, 15:47 | |
Помогаю со студенческими работами здесь
40
Многомерный массив, Си!!! Многомерный массив Многомерный массив многомерный массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |