Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2017, 15:02   #1
Player150
Пользователь
 
Регистрация: 21.07.2017
Сообщений: 12
По умолчанию Имя массива

Здравствуйте, возник вопрос по массивам. Предположим есть инструкция:
int a[] = { 5, 6, 7, 8, 9, };

Если я обращаюсь к элементу так:
int a[3] = 6;

Можно ли расценивать в данном случае имя массива как указатель? Или все таки здесь идет обращение к элементу как обращение у обычной переменной?

Просто читал на сайтах что, например, p[3] == *(p+3), но это как я понимаю верно тогда, когда:
int * p = a;

Тогда уже здесь p[3] будет действовать как адресная арифметика, а не
как обращение как у обычной переменной?
Player150 вне форума Ответить с цитированием
Старый 21.07.2017, 15:59   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Имя массива != указатель. Точка.
Массив может лишь неявно каставаться к указательному типу.
Цитата:
Просто читал на сайтах что, например, p[3] == *(p+3)
Если p - объект класса, то нет.
Если Это указатель или массив, то
p[3] преобразуется в *(p + 3),
поэтому, например, можно написать так:
3[p] - это преобразуется в *(3 + p).
Цитата:
как обращение как у обычной переменной?
Что такое "обычная" переменная, и чем она отличается от "необычной"?
Croessmah вне форума Ответить с цитированием
Старый 22.07.2017, 00:30   #3
Player150
Пользователь
 
Регистрация: 21.07.2017
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Имя массива != указатель. Точка.
Массив может лишь неявно каставаться к указательному типу.

Если p - объект класса, то нет.
Если Это указатель или массив, то
p[3] преобразуется в *(p + 3),
поэтому, например, можно написать так:
3[p] - это преобразуется в *(3 + p).

Что такое "обычная" переменная, и чем она отличается от "необычной"?
Хотел написать "Обычное обращение к переменной") Вообще, спасибо, вроде доходит. А вот, например, когда мы используем &a[5] - здесь ведь нет никакого преобразования к указателю, верно? Как я понял, во всех случаях, кроме, когда имя массива - это операнд sizeof, _Alignof и &, он преобразуется к rvalue указателю, верно? Спасибо
Player150 вне форума Ответить с цитированием
Старый 24.07.2017, 16:28   #4
Player150
Пользователь
 
Регистрация: 21.07.2017
Сообщений: 12
По умолчанию

Ап

Также вот заинтересовало что происходит в данной инструкции:
int a[10];

int & ref = a[5];

Если a[5] == *(a+5), тогда получается создается псевдоним ref для значения элемента? Или для самого элемента на 6 позиции?
Player150 вне форума Ответить с цитированием
Старый 24.07.2017, 16:51   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А у вас у самого нигде не екает, когда вы пишите "псевдоним для значения"? Он что за 2кой будет гоняться? А если эту 2ку запишут и в 9 элемент?

Не раскладывайте все на арифметику указатель без необходимости - вам же легче будет. Представьте по старому массив, как набор ячеек или вагонов, и уже понятнее будет, что ссылка такое.

Последний раз редактировалось p51x; 24.07.2017 в 16:53.
p51x вне форума Ответить с цитированием
Старый 24.07.2017, 17:09   #6
Player150
Пользователь
 
Регистрация: 21.07.2017
Сообщений: 12
По умолчанию

Ага, понял. Чтож, в данном случае буду расценивать это как уникальный идентификатор с добавлением нужного индекса.
Player150 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести на экран имя массива? Hornet_nsk Паскаль, Turbo Pascal, PascalABC.NET 3 08.04.2012 19:33
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
Узнать имя листа, если известно кодовое имя tae1980 Microsoft Office Excel 3 20.03.2011 21:57
символьные данные сложной структуры и имя массива как параметр функции EkaterinaA Помощь студентам 3 22.02.2009 21:36