Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913

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

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

Студворк — интернет-сервис помощи студентам
К элементам массива можно обращаться разными способами. Обычно в квадратных скобках пишут номер элемента массива, а тут узнал что так же можно писать и имя самого массива. Но непонятно для чего все это сделано?
C++
1
2
3
4
int A[20];
 
A[10] = 0;
10[A] = 0;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2012, 17:21
Ответы с готовыми решениями:

Ошибки обращения к элементам массива
// Симплекс метод.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include...

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

Почему итераторы в STL используют такой странный подход к индексации?
Здравствуйте. Вопросы касаются пока только последовательных контейнеров. Почему при инициализации контейнера массивом из, например, 5...

7
 Аватар для Gus
26 / 37 / 10
Регистрация: 17.02.2009
Сообщений: 364
20.12.2012, 17:25
Лучший ответ Сообщение было отмечено как решение

Решение

Что бы вы задали обязательно вопрос здесь.
Думаю что для удобства.
2
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
20.12.2012, 17:32
Насколько я знаю при индексации имя массива сначало неявно преобразуется в указатель на первый элемент, так что вопрос можно свести к тому, почему это разрешено для указателей)
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
20.12.2012, 17:32
я бы на их месте оставил бы синтаксис *(A+10)=0; И вопросов бы не возникало. Сразу видно, от перемены мест слагаемых результат не меняется.
А квадратные скобки - высокоуровневое излишество
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.12.2012, 17:37
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А квадратные скобки - высокоуровневое излишество
Ну это же паскаль и не решётка, а язык как раз высокого уровня.

Добавлено через 1 минуту
Для указателей, кстати, не логично запрещать
C++
1
10+A
. Но одно дело сложение и совсем другое квадратные скобки.
1
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
20.12.2012, 17:38
Вообще, уже обсуждалось, как минимум здесь: Почему работает и так, и так: arr[i] и i[arr]?.
1
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
20.12.2012, 18:01  [ТС]
Цитата Сообщение от gray_fox Посмотреть сообщение
так что вопрос можно свести к тому, почему это разрешено для указателей)
Я вот тоже не пойму как это все работает и почему не возникают ошибки при компиляции

Добавлено через 21 минуту
gray_fox, спасибо за ссылку. Теперь понемногу начинаю понимать смысл всего этого
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
20.12.2012, 18:25
Вообщем, я думаю суть такова:
A[10] => (&A[0])[10] => *(&A[0] + 10).
10[A] => 10[(&A[0])] => *(10 + &A[0]).

Добавлено через 5 минут
http://c-faq.com/aryptr/joke.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2012, 18:25
Помогаю со студенческими работами здесь

Как производить все обращения к элементам массива с использованием указателей?
#include "stdafx.h" #include <iostream> #include <cstdlib> #include <ctime> #include <iomanip> using namespace std; ...

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

Как производить все обращения к элементам массива с использвованием указателей?
#include <time.h> #include <stdio.h> #include <math.h> #include <conio.h> #include <iostream> #include<Windows.h> using...

Как производить все обращения к элементам массива с использвованием указателей?
#include "stdafx.h" #include <iostream> #include <cmath> using namespace std; int main() { double x = 1.1, eps =...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru