Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
#1

Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? - C++

20.12.2012, 17:21. Просмотров 689. Ответов 7
Метки нет (Все метки)

К элементам массива можно обращаться разными способами. Обычно в квадратных скобках пишут номер элемента массива, а тут узнал что так же можно писать и имя самого массива. Но непонятно для чего все это сделано?
C++
1
2
3
4
int A[20];
 
A[10] = 0;
10[A] = 0;
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 17:21     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива?
Посмотрите здесь:

Способы обращения к элементам массива - C++
Насколько мне известно, существуют два способа обращения к элементам массива: 1) С использованием квадратных скобок array 2)При...

Написать программу, использующую для обращения к элементам массива указатели - C++
Переписать данную программу, используя для обращения к элементам массива указатели Задача: из заданного одномерного массива A...

Ко всем элементам одномерного массива прибавить первый - C++
Дан одномерный массив. Нужно ко всем его элементам прибавить первый . Например : ввод - 1 2 3 4 вывод - 3 4 5

Прибавить ко всем элементам одномерного числового массива максимальный элемент - C++
Прибавить ко всем элементам одномерного числового массива максимальный элемент. Пожалуйста помогите)))))

Исправить программу, чтобы она прибавляла ко всем элементам одномерного массива первый - C++
Подскажите как сделать чтобы эта программа ко всем элементам прибавляла не 1 , а первый элемента одномерного массива (строки) #include...

Странный синтаксис шаблона - C++
Здравствуйте. Объясните пожалуйста, почему при передаче функции-шаблону какого-нибудь контейнера, получается старнный синтаксис. ...

Странный синтаксис конструктора класса - C++
Объясните с точки зрения синтаксиса C++, что означает перечисление после двоеточия? OgreApp::OgreApp(void) : mRoot(0), mCamera(0), ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364
20.12.2012, 17:25     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Что бы вы задали обязательно вопрос здесь.
Думаю что для удобства.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
20.12.2012, 17:32     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? #3
Насколько я знаю при индексации имя массива сначало неявно преобразуется в указатель на первый элемент, так что вопрос можно свести к тому, почему это разрешено для указателей)
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
20.12.2012, 17:32     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? #4
я бы на их месте оставил бы синтаксис *(A+10)=0; И вопросов бы не возникало. Сразу видно, от перемены мест слагаемых результат не меняется.
А квадратные скобки - высокоуровневое излишество
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.12.2012, 17:37     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А квадратные скобки - высокоуровневое излишество
Ну это же паскаль и не решётка, а язык как раз высокого уровня.

Добавлено через 1 минуту
Для указателей, кстати, не логично запрещать
C++
1
10+A
. Но одно дело сложение и совсем другое квадратные скобки.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
20.12.2012, 17:38     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? #6
Вообще, уже обсуждалось, как минимум здесь: Почему работает и так, и так: arr[i] и i[arr]?.
v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
20.12.2012, 18:01  [ТС]     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? #7
Цитата Сообщение от gray_fox Посмотреть сообщение
так что вопрос можно свести к тому, почему это разрешено для указателей)
Я вот тоже не пойму как это все работает и почему не возникают ошибки при компиляции

Добавлено через 21 минуту
gray_fox, спасибо за ссылку. Теперь понемногу начинаю понимать смысл всего этого
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 18:25     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива?
Еще ссылки по теме:

Синтаксис языка - C++
Добрый день,хочу научиться языку C++,но все время у меня в голове весят вопросы по типу "Что означает это","А что это" и т.п. Допустим в...

Синтаксис языка с++ - C++
указать порядок вычислений и расставить скобки если нужно: х=7, b=5, c=7, d=2 1) a=b+c*d<<2&8 2) a&077!=3 3)...

Вложенные классы. Что за синтаксис такой? - C++
Всем привет! Писал код с вложенным классом, столкнулся с таким синтаксисом: template <typename Type> class ExternalClass { ...

Произведение элементов одномерного массива. Код работает, но почему-то путает знаки - C++
using namespace std; int main(){ int mas; for ( int i=0; i<20; i++) { cout<<"A="; cin>>mas; } /*for (int...

Почему код корректро отрабатывает после обращения по разыменованному нулевому указателю? - C++
Добрый вечер, проходил тест по плюсам и столкнулся со следующим кодом. Объясните, пожалуйста, почему всё работает? По идее же происходит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
20.12.2012, 18:25     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? #8
Вообщем, я думаю суть такова:
A[10] => (&A[0])[10] => *(&A[0] + 10).
10[A] => 10[(&A[0])] => *(10 + &A[0]).

Добавлено через 5 минут
http://c-faq.com/aryptr/joke.html
Yandex
Объявления
20.12.2012, 18:25     Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru