|
4 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 38
|
|||||||||||
Непонятно функционирование цикла while в данном примере12.05.2015, 09:13. Показов 1236. Ответов 7
Метки нет (Все метки)
Всем привет, ребят! Заранее благодарю за помощь.
Пример взят из книги Шилдт C++ "Шаг за шагом" и немного модифицирован мной, для выведения промежуточных результатов адресов и значений. Глава: "Передача массива в функцию"
while(9) { *n= 2*2*2 9-1 8+1 Повтор цикла }
0
|
|||||||||||
| 12.05.2015, 09:13 | |
|
Ответы с готовыми решениями:
7
Найти ошибку в данном примере
Объясните, как в данном примере работает friend |
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
|
| 12.05.2015, 09:29 | |
Сообщение было отмечено ultradox как решение
Решение
У разыменовывания (*) приоретет ниже, чем у постфиксного инкремента (++), поэтому код `*n++` равносилен `*(n++)`.
`n++` — переход к следующему элементу массива, т.е. сдвиг указателя на один элемент вправо. (Дело в том, что функция cube работает лишь с указателем).
1
|
|
|
4 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 38
|
||||||
| 12.05.2015, 10:20 [ТС] | ||||||
|
Спасибо за быстрый и внятный ответ!
Более менее все понял. Но пока еще не чувствую твердой почвы с указателями, вроде два символа *-вывести значение, расположенное по адресу памяти, &-вывести адрес значения, а везде работают по-разному. А еще вопрос опять же с этим же циклом:
*n= 2*2*2 ==8 (*8)++ но на практике работает как-то по-другому. Скриншот не могу вставить. Скопирую строку: Новые значения: 1267535401 002DFE3C 2 002DFE40 3 002DFE44 4 002DFE48 5 002DFE4C 6 002DFE50 7 002DFE54 8 002DFE58 9 002DFE5C 10 002DFE60 Для продолжения нажмите любую клавишу . . . Спасибо!
0
|
||||||
|
5 / 5 / 4
Регистрация: 31.03.2015
Сообщений: 48
|
|
| 12.05.2015, 10:38 | |
|
n это указатель на массив int. Применение операции инкремента к нему вызовет переход указателя на следующий элемент. В первой строке цикла присваивается куб. Во второй выполняется декремент num(размер массива). В третьей перевод указателя на следующий элемент. n это адрес элемента, а не число! а num это просто размер массива, можешь хоть к нулю его приравнять, элементы массива не изменятся, потому, что это просто значение которое передает функции размер массива.
1
|
|
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
||||||||||||
| 12.05.2015, 11:56 | ||||||||||||
|
Оператор * в С++ имеет два разных смысла. То, как этот символ интерпретируется, зависит от того, является ли он бинарным либо унарным.
Если он бинарный, т.е. справа и слева от него есть какие-то операнды, то это просто умножение. Если же, он унарный, т.е. у него лишь один операнд, то это операция разыменовывания. В результате получается именующее выражение, т.е. оно может стоят в левой части оператора присваивания (=). И ещё кое-какие отличия. Так, например, в строчке `*n = *n * *n * *n` звёздочка используется в обоих этих смыслах. Первая и вторая слева звёздочки — операция разыменовывания. Третья и пятая — умножение, четвёртая и шестая — опять же разыменовывание. Пробелы никакой роли не играют. Символ & также имеет два смысла. В первом случае он интерпретируется как унарный оператор взятия адреса. Возвращает значащее выражение, т.е. ему нельзя ничего присваивать, оно является значением. Напримаер:
Например:
Добавлено через 2 минуты
1
|
||||||||||||
|
4 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 38
|
|
| 12.05.2015, 15:45 [ТС] | |
|
Благодарю всех за ответы!
Все мне стало ясно теперь. Хорошего настроения!
0
|
|
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
||||||
| 12.05.2015, 19:13 | ||||||
|
И всё таки. В дополнение к предыдущему моему сообщению. У звёздочки есть ещё один смысл: модификатор типа.
Сравните:
Ну, всё, теперь хотя бы моя совесть будет спокойна.
1
|
||||||
|
4 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 38
|
|
| 12.05.2015, 20:38 [ТС] | |
|
Как их инициализировать и как использовать в различных выражениях мне неплохо понятно, а вот в моём цикле было не очень, за счёт того, что забыл проверить приоритетность логических выражений. Теперь мне, благодаря вам картина ясна и почему *n в каждом цикле обнуляется и то, что n!=*n. Ещё раз благодарю.
0
|
|
| 12.05.2015, 20:38 | |
|
Помогаю со студенческими работами здесь
8
Объясните на данном примере как работать с композицией Как изменить значение const в данном примере? Объясните, как в данном примере работают виртуальные функции?
Многопоточность. Почему в данном примере один элемент стека будет отброшен, а другой обработан дважды Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|