![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
whoever |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.7.2007 Репутация: нет Всего: 1 |
В книге Кернигана и Ритчи "Язык программирования Си" сказано, что оператор [] выполняется слева направо (параграф "Приоритет и очередность вычислений"). Далее, в параграфе "Многомерные массивы" сказано, что объявление
объявит массив, где последовательно будут расположены объекты char длиной в Y (то есть, в оптимальном переборе чаще будет меняться второй индекс). Переводя в слова, это значит: "array есть указатель на X указателей, каждый из которых указывает на Y объектов char". (Указатель на N указателей - имеется в виду указатель на первый из N объектов, расположенных последовательно в памяти, каждый из которых есть указатель.) Но раз [] выполняется слева направо, то вышеупомянутое объявление, как я понимаю, на самом деле должно говорить "array есть указатель на Y указателей, каждый из которых указывает на X объектов char". Иллюстрация мыслей такова (с учетом применения [] слева направо):
Последнее и есть "указатель на Y указателей, каждый из которых указывает на X объектов char". Видимо, есть ошибка в моих рассуждениях. Прошу помощи. |
||||
|
|||||
Acer |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
означает, что array - это массив из 10-ти строк длинной 20 символов каждая.
- это
То есть array[0] - это есть указатель на первый элемент str[20] |
||||||
|
|||||||
whoever |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.7.2007 Репутация: нет Всего: 1 |
В первом сообщении темы написано, что книга говорит о том же самом. Но разве не возникает при этом конфликта с утверждением о том, что оператор [] выполняется слева направо?
|
|||
|
||||
Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
Либо я чего-то не понимаю, либо ты путаешь право и лево |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Тупо взять отладчик и пройтись по коду, тогда вопросы отпадут.
Переворачивать слова можно бесконечно и это просто бесполезно и глупо. |
|||
|
||||
whoever |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.7.2007 Репутация: нет Всего: 1 |
Daevaorn, я понимаю, что должно произойти - отладчик бы тут не помог. Я пытался найти некую общую структуру объявлений, а не запоминать их как набор разрознённых правил.
Все, проблема решена. Спасибо всем уделившим ей внимание. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |