Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Поясняю: *(*(A+i)+j)=10....это тоже самое, что и A[i][j]=10
Отправлено
ТуамОсес
26 декабря 2006 г. 00:11
В ответ на:
Ответ: Да??? Да что Вы говорите...А обращение в С++ к элементу массива через указателя Вам известно??? Например *(*(A+i)+j)....Не знали такой конструкции в С+++?
отправлено ТуамОсес 26 декабря 2006 г. 00:10
Составить ответ
|
Вернуться на конференцию
Ответы
а сам индекс не является указателем? А?
—
=L.A.=
(26.12.2006 00:20:46
213.134.214.10
,
пустое
)
нет, не является. Индексом может быть любая целочисленная переменная или константа, но не указатель.
—
SМ
(26.12.2006 00:31:6
213.141.159.26
,
пустое
)
а указатель не есть целочисленная переменная?
—
=L.A.=
(26.12.2006 00:40:40
213.134.214.10
,
пустое
)
Ответ: Да, мля......Очень тяжёлый случай.....Если так рассуждать - любой программный объект в внутрненнем представлении можно рассматривать как целое число
—
ТуамОсес
(26.12.2006 00:45:13
212.248.122.75
,
пустое
)
Нет, правила арифметики у указателя и у целочисленной переменной совсем разные.
—
SМ
(26.12.2006 00:42:58
213.141.159.26
,
пустое
)
общение с Доктором пагубно влияет на психику. Правила арифметики одинаковые всегда и везде.
—
=L.A.=
(26.12.2006 00:44:34
213.134.214.10
,
пустое
)
Тогда попробуйте указатель умножить или разделить на что нибудь. И внимательно прочитайте все, что о Вас расскажет Вам компилятор. :)
—
SМ
(26.12.2006 00:46:9
213.141.159.26
,
пустое
)
Ответ: Слово "перегрузка" конечно же не знакомо Господину "L.A."...Ему и в голову не может прийти, что знаком "+", можно обозначить совершенно разные операции - если захотеть, можно даже с помощью плюса обозначать вычитание
—
ТуамОсес
(26.12.2006 00:51:3
212.248.122.75
,
пустое
)
Я имел в виду стандартное поведение операторов. С перегрузкой, естесвенно, можно что угодно наворотить.
—
SМ
(26.12.2006 00:53:53
213.141.159.26
,
пустое
)
Ответ: Дык это тоже перегрузка ....Только стандартная, то бишь зарезервированная в языке...Так же как перегружена операция "+" в выражении A+B..Будут отрабатываться разные участки кода, в зависимости от того к какому типу принадлежат A и B {float, int и т.д}
—
ТуамОсес
(26.12.2006 00:58:7
212.248.122.75
,
пустое
)
Какая разница, как это назвать. Я имею в виду поведение операторов, описанное в стандарте. Скажем так, в обычном С, без ++.
—
SМ
(26.12.2006 00:59:52
213.141.159.26
,
пустое
)
Ответ: ISO то может и не содержит, но по смыслу, как назвать, что для выисления выражения A + B , для типа int будет вызвана одна функция, а для типа float - другая...Как это назвать?
—
ТуамОсес
(26.12.2006 01:06:46
212.248.122.75
,
пустое
)
В стандарте они называются "predefined operators". Значит так и назвать - предопределенные операторы.
—
SМ
(26.12.2006 01:14:52
213.141.159.26
,
пустое
)
Более того, как только оператор становится перегруженным, он теряет свойства предопределенного (для арифм. операторов), такие как ассоциативность и коммутативность. Т.е. для перегруженного оптимизатор уже не может заменить "a+b" на "b+a". Когда для предопределенного ему это разрешено (п. 1.9.15)
—
SМ
(26.12.2006 01:43:9
213.141.159.26
,
пустое
)
И, кстати, ISO/IEC 14882:1998 не содержит понятия "стандартная перегрузка операторов", так что Ваше высказывание некорректно.
—
SМ
(26.12.2006 01:02:6
213.141.159.26
,
пустое
)
Ответ: Вотименна...А то ещё над Доктором смёцца, а сам элементарных вещей не знает
—
ТуамОсес
(26.12.2006 00:38:19
212.248.122.75
,
пустое
)
Ответ: Индекс не это просто целое цисло, к указателям он никакого отношения не имеет...Конечно, можно считать его указателем...Но только в очень широком значении этого слова..А мы тут говорим про вполне конкретный термин С++
—
ТуамОсес
(26.12.2006 00:26:41
212.248.122.75
,
пустое
)
И что дальше? Вам привести листинги от пары разных компилеров, чтобы Вы наглядно убедились, что для арифметики указателей, будь то через оператор "+", будь то через оператор [], никаких лишних данных в памяти хранить не надо?
—
SМ
(26.12.2006 00:13:36
213.141.159.26
,
пустое
)
Щас отвечу...Подождите...Получше сформулирую...Или Вы уже поняли свою ошибку?
—
ТуамОсес
(26.12.2006 00:16:18
212.248.122.75
,
пустое
)
Нет, это Вы не поняли свою. Точнее не читали стандарт ANSI/ISO
—
SМ
(26.12.2006 00:17:11
213.141.159.26
,
пустое
)
Ответ: Во-первых, насчёт того, что никакая дополнит. инфа не хранится.. А как по-Вашему компилер определяет в выражении *(A+i) сколько реально ему нужно прибавить к внутреннему представлению уазателя? Ведь длина массива и размер его элемента могут быть произвольными??? Это раз
—
ТуамОсес
(26.12.2006 00:23:9
212.248.122.75
,
пустое
)
Опять низачот. При объявлении многомерного массива все размерности, кроме последней, обязательно указываются. Оттуда компилер и знает, сколько и когда прибавлять.
—
SМ
(26.12.2006 00:29:49
213.141.159.26
,
пустое
)
Ответ: Спицально тупите? А в выражениях {пример которого я привёл}, которых в проге может быть туева хуча, компилятор тоже не использует служебную инфу при операциях с указателями {шоб определить, скока и куда надо прибавлять}???
—
ТуамОсес
(26.12.2006 00:33:46
212.248.122.75
,
пустое
)
Нет, не использует. Советую думать, прежде чем что-то писать (+)
—
SМ
(26.12.2006 00:41:35
213.141.159.26
, 1270 байт)
Ответ: А про динамические массивы слыхали?....Почитайте тело мессаджа...
—
ТуамОсес
(26.12.2006 12:42:53
82.204.230.152
, 398 байт)
Ой. int (pointer *)[10]; pointer=new int[5][10]...
—
-=ВН=-
(26.12.2006 14:12:49
193.125.71.140
,
пустое
)
Слыхали, но это принципиально другой вопрос. Вы сами создали такую структуру, как хотели, и никто Вас в этом не ограничивает, можете наворотить еще хитрее и сложнее. И это отнюдь не "особенности внутреннего представления многомерных массивов в C++, например, для хранения массива A[5][6][4] ". Явно заданный тип по этому примеру "A[5][6][4]" с указанием размерностей НИКОГДА не будет так представлен.
—
SM
(26.12.2006 13:06:2
85.21.237.237
,
пустое
)
Ответ: Глюкануло что-то при передаче мессаджа и листинг покоцался...Попробую ещё раз...
—
ТуамОсес
(26.12.2006 12:49:18
82.204.230.125
, 359 байт)
Ответ: Модер!!! Чё за куйня???...Оператор <i..+..+> и всё что за ним до скобки вырезаеццо {с точками спицально написал шоб не вырезался}....А?
—
ТуамОсес
(26.12.2006 12:53:45
82.204.230.210
,
пустое
)
Модер тут не причем. Чтобы постить С-исходники в интернет, надо еще немного знакомым с HTML быть.
—
SM
(26.12.2006 13:54:21
85.21.237.237
,
пустое
)
P.S. Про теневые поля, переменные и операции, надеюсь, Вы к курсе
—
ТуамОсес
(26.12.2006 00:24:0
212.248.122.75
,
пустое
)
Доктор не читает, Доктор пишет.
—
=L.A.=
(26.12.2006 00:21:21
213.134.214.10
,
пустое
)
Вот это точно подмечено :) :)
—
SМ
(26.12.2006 00:43:53
213.141.159.26
,
пустое
)
;)))))))))
—
Electrovoicer
(26.12.2006 00:22:36
81.201.28.3
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 38:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru