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

Почему работает и так, и так: arr[i] и i[arr]? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ К какому типу грамматики относится грамматика C++? http://www.cyberforum.ru/cpp/thread574020.html
Доброго времени суток. Пишу курсовую на тему "Компиляторы". Была дана задача реализовать 2 парсера, которые будут проверять оформление сорцов на шарпе и плюсах. В качестве генератора использовал...
C++ Считывание пикселей в игре Всем добрый день. Загорелся идеей сделать следущее: программу, которая в популярной игре CS 1.6 будет сканировать игровую область и при обнаружении в этой области моделек противника (или его головы)... http://www.cyberforum.ru/cpp/thread565063.html
C++ Перемножения матриц с OpenMP дольше чем...
Здравствуйте! Написал 2 программы перемножения матриц, одну с использованием OpenMP, другую - просто. 2 матрицы 1000х1000 с использованием OpenMP высчитываются дольше. Процессор Intel Atom N570,...
Посоветуйте книгу по разработке OLE DB и ODBC провайдеров. C++
Уважаемые коллеги. Не знаю в какой раздел написать. Думаю, что это ближе к C++. Посоветуйте что почитать по разработке OLE DB и ODBC провайдеров. Пока нашел на амазоне "OLE DB and ODBC...
C++ C++ prog как cgi-скрипт, от чего иная инфа? http://www.cyberforum.ru/cpp/thread556141.html
Здравствуйте. Я новичок на форуме, не ругайте если что-то где-то не то разместил или не понятно рассказал. Описываю проблемы-вопрос 0) Использую Slackware 13.37 и встроенные методики 1) есть...
C++ Отключение клавиатуры, а именно комбинаций CTRL+ALT+DEL\WIN+L Здравствуйте, пишу программку, стала задача заблокировать на некоторое время комбинации клавиш CTRL+ALT+DEL\WIN+L. Пробовал посылать SHIFT при нажатии одной кнопки из комбинации, не помогло (хотя... подробнее

Показать сообщение отдельно
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.12.2012, 18:38
Цитата Сообщение от Bers Посмотреть сообщение
Нет. Не так. Это - массив. Который компилятор имеет право не явно приводить к типу указателя
Нет. arr - это массив, реализуемый с помощью указателя. Именно так. О том, что это массив знают люди и sizeof, в остальных случаях это указатель. Мало того,
C++
1
2
3
int *p;
int i;
p[i] /* i-й элемент массива, на который указывает p, таким образом, указатель на массив и на его нулевой элемент - одно и тоже*/
.

Добавлено через 2 минуты
Например,
C++
1
2
3
4
int a[30];
    int *p;
    p=&a[4];
    p[3]=16;//16 присваивается седьмому элементу a
.

Добавлено через 39 минут
Цитата Сообщение от Evg Посмотреть сообщение
/* При вычислении адреса *используется формула a + i * sizeof (int)*/
a[i];
/* При вычислении адреса *используется та же формула a + i * sizeof (int),
** но не i + a * sizeof (int). Так что правило коммутативности тут не используется
** (т.к. выражения НЕ симметричны) */
Нет. То, что на низком уровне есть умножение, ничего не значит, формула здесь a+i безо всяких * sizeof (int). Да, само сложение перегружено на сложение не со слагаемым, а с его произведением на sizeof. Но это внутри оператора, а не в выражении. И некоммутативность здесь не причём, асимметрия суммы проистекает из разнотипности слагаемых: указатель и size_t. От их переставновки приходим просо к другой операции, которая перегружена прямо противоположным образом. Но если так и написать i+a, то выглядит это как обычная сумма чисел и от перестановки результат меняться не должен. Он и не меняется. Но скобки - это другой синтаксис и как сложение они не выглядят.

Добавлено через 3 минуты
В случае скобок это снижает читабельность, так как не говорит о том, где здесь индекс, а где указатель. Другое дело сумма с указателем, там адресная арифметика.

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