Вопрос А Вы пробовали так выводить элемент массива? Это какой-то фокус в C++ ?

Регистрация
22 Ноя 2013
Сообщения
79
Репутация
0
Спасибо
1
Монет
0
Int mas[] = {1,2,3};
cout<<0[mas];
 
Пожалуйста имейте ввиду, что этот пользователь забанен
И в языке С, и позаимствовавшем этот бред C++ массивов, как отдельного типа данных, нет. Массивы - всего лишь синтаксический сахар для указателей. Потому, в отличие от других языков, значением массива является не набор его элементов, а указатель на начало массива: типом значения mas является *int. Операция mas - это всего лишь более удобная запись выражения *(mas + i). И как мы можем записать *(i + mas), так мы можем записать и i[mas]. Так что конструкции mas[0], *(mas + 0), *(0 + mas), 0[mas] полностью эквивалентны. P.S. Насколько помню, это разбирается в K&R.
 
Мда... А вот с vector и прочими классами с квадратно-скобочными операторами не работает. Значит это действительно что-то связанное с адресной арифметикой. Ну а "зачем" - это вряд ли кто-то ответит.
 
Назад
Сверху