|
0 / 0 / 0
Регистрация: 04.10.2019
Сообщений: 66
|
||||||
Константные аргументы функции25.03.2020, 22:46. Показов 6402. Ответов 17
Посмотрел видео SimpleCode Константные аргументы функции. Там он объясняет зачем нужны константные аргументы функции и всё. Вот его код. Появился вопрос. Чем отличаются const int A, int const A, const int const A друг от друга в параметрах ?
0
|
||||||
| 25.03.2020, 22:46 | |
|
Ответы с готовыми решениями:
17
Константные аргументы классов Что такое константные аргументы и процесс линковки программы?
|
|
"C with Classes"
|
||
| 25.03.2020, 23:24 | ||
Сообщение было отмечено Inter_106 как решение
Решениеconst int * const A - константный указатель на константуint const * A - не константный указатель на константуconst int * A - не константный указатель на константуconst int A, int const A - с типами не указателями нет разницы
1
|
||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||||||||||||
| 25.03.2020, 23:26 | ||||||||||||
Сообщение было отмечено Inter_106 как решение
Решение
То есть, сделать *a = 0 не выйдет. Содержимое памяти по указателю константно. (Замечу, const int и
Лексемма * указывает на то, что тип переменной - указатель. Ключевое слово const перед именем переменной указывает что сама переменная неизменяемый указатель. То есть, сделать a = &b не получится. а - константа. На const int const A компилятор даст ворнинг, что квалификатор const применен дважды к одному типу. int* const a константная ссылка на неконстантные значения. Можно менять память по указателю *a = 0, но нельзя поменять содержимое самой переменной a = b не скомпилируется. const int* const a - и содержимое памяти и указатель нельзя менять.
0
|
||||||||||||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
||
| 25.03.2020, 23:38 | ||
|
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||||||||||||||||||||||
| 25.03.2020, 23:59 | ||||||||||||||||||||||||||
Сообщение было отмечено Inter_106 как решение
Решение
Разница между
Добавлено через 6 минут Это лучше понятно вот так:
0
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 04.10.2019
Сообщений: 66
|
|
| 26.03.2020, 00:09 [ТС] | |
|
0
|
|
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
|||||||||||||||||
| 26.03.2020, 00:57 | |||||||||||||||||
const непосредственно на типе принципиально отличается от const более высокого уровня индирекции. Отличается тем, что const на типе относится глобально ко всему объявлению, а const более высокого уровня относится только к одному отдельному декларатору.Здесь может быть не ясно, является ли b константой или не является:
d:
const относится ко всему объявлению, т.е. и к a, и к b, и к c, и к d
const на типе все таки писать в самом начале объявления.
2
|
|||||||||||||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||||||||
| 26.03.2020, 01:03 | ||||||||
0
|
||||||||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 26.03.2020, 01:22 | |
|
Не по теме: TheCalligrapher, я думал, что как предпочтительнее решает "style-code — группа". Добавлено через 1 минуту Не по теме: Да и вопрос, в целом, относился к параметрам функций. Добавлено через 1 минуту Не по теме: Это не отменяет полезности сообщения, конечно.
0
|
|
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
|||
| 26.03.2020, 01:39 | |||
|
Это не говоря уже о том, что "warning" в VS2017 рапортуется только в режиме разрешенных Microsoft extensions.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||||||||
| 26.03.2020, 02:12 | |||||||||||||||||||||||||||
|
что квалификатор const игнорируется для параметров функции по значению. вот эти два объявления абсолютно эквивалентны:
если его указать в определении функции, то компилятор проконтролирует, что копия аргумента внутри функции не изменится.
0
|
|||||||||||||||||||||||||||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
|||
| 26.03.2020, 03:29 | |||
|
0
|
|||
|
"C with Classes"
|
||
| 26.03.2020, 05:22 | ||
|
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 26.03.2020, 09:04 | |
|
Чтобы const int что-то подчёркивал, нужно, чтобы читающий код уже знал, что это что-то подчёркивает. В более простом случае это неочевидно.
Рекомендацию писать const для каждого объекта или каждой переменной отдельно можно встречать в учебниках (вероятность высокая), а что для одного квалификатора const нужно писать много переменных и/или объектов — встретить, скорее всего, невозможно (вероятность крайне низкая), наоборот, это должно критиковаться. Никакой путаницы в таком раскладе не будет.
0
|
|
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
||
| 26.03.2020, 09:47 | ||
* и & влево в объявлениях. Это их право, но я такого стиля не придерживаюсь.Во-вторых, стиль "одно объявление - один декларатор" приводит к множественному повторению одного и того же имени типа при необходимости сделать несколько объявлений. Это совершенно не приемлемо. Имена конкретных типов в программе должны упоминаться настолько редко, насколько это возможно. Указывать имена типов несколько раз, да еще и в ситуации, когда они должны быть заведомо одинаковыми - это плохо. Современное auto несколько помогает решить эту проблему, устраняя необходимость указывать конкретные имена типов, но как раз тут и начинают блистать объявления с множественными деклараторами: такие объявления гарантируют, что для всех объектов, которые должны иметь один и тот же тип, будет действительно дедуцирован один и тот же тип. А вот в множественных отдельных объявлениях возможны неприятные сюрпризы с дедукцией типов.В-третьих, многие такие учебники предназначены для студентов-первокурсников, для того, что сформировать у них правильные приоритеты. Учебники для студентов-второкурсников начинаются словами "забудьте всю ту чушь, которую вам втирали учебники в прошлом году".
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 26.03.2020, 10:05 | |
|
Я не хочу спорить, расклад может быть только или или: или есть "code-style" требование, или каждый пишет, как ему больше нравится.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 26.03.2020, 11:13 | |||
|
это - главная причина, почему во всем цивилизованном мире запрещено однострочное уг. а вообще, твоё сообщение отдаёт чем то регилиозным. любые тезисы в духе: "это не правильно", без объяснения причин, просто потому, что кто-то когда-то почему-то так решил - вкусовщина религиозного ума. я могу возразить: можно сколько угодно повторять что угодно, если это делает код более простым и понятным. простой и понятный код всегда лучше не простого, и не понятного. однострочники делают код более сложным и менее понятным. именно по этой причине однострочники запрещены (или не рекомендуются) во всех цивилизованных регламентах стиля
0
|
|||
| 26.03.2020, 11:13 | |
|
Помогаю со студенческими работами здесь
18
Константные функции
Константные функции-члены ?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки 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.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|