|
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
|
|
Читаю книгу14.08.2021, 19:12. Показов 14359. Ответов 222
Метки нет (Все метки)
Когда пишу, то что читаю, запоминаю лучше.
Читаю книгу Курс программирования на языке СИ. Сергей Фомин, Вадим Подбельский Есть такое предложение там: Идентификаторы могут иметь любую длину, но компилятор учитывает не более 31 символа от начала идентификатора. В некоторых компиляторах это ограничение еще более жесткое, и учитываются только первые 8 символов любого идентификатора. В этом случае идентификаторы NUMBER_OF_ROOM и NUMBER_OF_TEST в программе будут неразличимы. ----------------------------------------------- Непонятно что они имеют в виду под идентификатором? Возможно имена присваеваемые переменным? Эти имена присваемые переменным не могут превышать 31 символ?
0
|
|
| 14.08.2021, 19:12 | |
|
Ответы с готовыми решениями:
222
Читаю из файла, scanf, число с лидирующим нулем Читаю книгу, нужны задания Читаю книгу,есть то чего я не понял) |
|
из племени тумба-юбма
|
|||
| 20.08.2021, 20:19 | |||
|
Добавлено через 2 минуты
0
|
|||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,321
|
|
| 20.08.2021, 20:34 | |
|
мама Стифлера, разыменование - это оператор. Это не относится к объявлению переменной-указателя
Добавлено через 33 секунды так же, как и взятие адреса
0
|
|
|
из племени тумба-юбма
|
||
| 20.08.2021, 20:52 | ||
int* a, b; - хороший пример привели. Чтоб не путаться, реально проще прилепить звездочку к переменной. Пусть даже по синтаксису это не правильно.
0
|
||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,321
|
|||
| 20.08.2021, 20:56 | |||
|
Или, давай, вообще всё в одну строчку писать ![]() ![]() в Си полно таких вещей ))
0
|
|||
|
из племени тумба-юбма
|
|
| 20.08.2021, 21:12 | |
|
Это тяжело понять. То есть, когда просто объявляем указатель, то пишем так
int* ptr;А когда объявляем с инициализацией, нужно писать так int *ptr = &b;
0
|
|
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,321
|
|||||||||||
| 20.08.2021, 21:31 | |||||||||||
|
мама Стифлера, нет, в обоих случаях звёздочка логичнее смотрится прилепленной к типу
мама Стифлера, может, вот так нагляднее будет
789Добавлено через 2 минуты подправил
2
|
|||||||||||
|
из племени тумба-юбма
|
||||||
| 20.08.2021, 21:53 | ||||||
|
Алексей1153,
с typedef еще запутанней вышло, лучше уж такКликните здесь для просмотра всего текста
В общем вроде понял. Если указан тип переменной, то звезду всегда лепить сразу после типа. А если типа нет, тогда лепить перед переменной и это означает разыминовывание, или присвоение. Ну как то так наверно.
0
|
||||||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,321
|
||
| 20.08.2021, 22:04 | ||
|
1) синтаксис объявления указателя: указуемый_тип* имя_указателя /*=инициализация*/; 2) синтаксис применения оператора разыменования: * имя_указателя или * выражение_возвращающее_адрес------ это два разных и не связанных между собой события: объявление указателя и разыменование при работе с указателем при разыменовании можно лепить пробелов сколько угодно - логически это не мешает(хотя и смотрится некрасиво). Это такой же унарный оператор, как + 1; //унарный плюса алиасом через typedef я всего лишь хотел подчеркнуть, что звёздочка - это часть типа указателя
1
|
||
|
4147 / 2725 / 433
Регистрация: 09.09.2017
Сообщений: 12,073
|
||||||||||||
| 21.08.2021, 00:16 | ||||||||||||
0
|
||||||||||||
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
||
| 21.08.2021, 03:55 | ||
{ и } , на begin и end, потому что кому-то так так "логичнее".Во-первых, в семантике объявления языка С звездочка всегда жестко ассоциирована с объявляемым идентификатором, а не с именем типа. Во-вторых, свое перекраивание вы сможете применить только к префиксным элементам объявления (звездочка), а с постфиксными ничего сделать все равно не сможете: сколько бы вы ни доказывали, что "логичнее" int[10] a, вам все равно придется писать int a[10].Зачем в такой ситуации нужны эти вялые полумеры со звездочкой?
0
|
||
|
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
|
|||||||||||||||||||||
| 21.08.2021, 06:15 [ТС] | |||||||||||||||||||||
|
Вопрос серьёзнее чем я думал.
Придумал другую теорию. Очень хорошее название: Ссылки. Но для красочности, наглядности и хорошего понимания я назвал это: Эффект Сабзиро(В игре мортал комбат Сабзиро оставляет своих ледяных клонов))) Или просто: Клоны. Во первых, такой код работать не будет: Пример без указателей:
С указателями идёт телепортация значений, подставление(ссылка, пересылка).
Причём адрес для доставки ЗНАЧЕНИЙ это *a и b (НЕ &b). И теперь можно из любого места кода(с небольшими оговорками) приравнять значение *a чему либо или b чему либо и они оба будут иметь одно ЗНАЧЕНИЕ. Например написали в любом месте кода(с небольшими оговорками) *а=20; Теперь значение 20 телепортируется в значение *а в этом выражении int *a = &b; И переменная b тоже стала иметь такое же значение потому что *a = &b; В таком выражении ЗНАЧЕНИЯ переменных приравниваются друг к другу по законам обыкновенного кода. Так как значения хранятся в *a и b, то *a=b ----------------------------------- (Действия совершаются разные над *a и a, а название(Указатель) одно и то же у них, считаю что это непорядок. *a - это клон указателя для ЗНАЧЕНИЯ переменной, (точка телепорта для ЗНАЧЕНИЯ переменной, ссылка), а - это указатель, в ЗНАЧЕНИИ которого находится АДРЕС другой переменной). Указателем обычно называют int *a; Моё мнение, что указатель это просто а, так как в ЗНАЧЕНИИ переменной а хранится АДРЕС другой переменной, а вот в *a хранится ЗНАЧЕНИЕ переменной, ссылка на которую содержится в указателе. Считаю что в этом вся путаница и если это объяснить правильными терминами, то всё станет понятно, я как всегда по колхозному изложил. Адрес в указателе сохраняется тоже в значении переменной, но без звёздочки. Нда, видимо в моём тексте можно запутаться по этому поводу. Я не утверждаю что я прав, исхожу из результатов опытов) Добавлено через 13 минут Насчёт того что адрес сохраняется в переменной не навсегда, спасибо. Значение переменной сохраняется в *a и b. Адрес сохраняется в a и &b(&b- отсюда берётся адрес, а не сохраняется там). Соответственно меняем адрес сохранённый в УКАЗАТЕЛЕ: Этот адрес &b изменить не получится, а если получится, то виндовс покажет фигу и синий экран. Куда типа лезешь менять стандартные названия ячеек.
Очень занимательный фокус Указателя заключается в том, что чей адрес содержит Указатель, значение той переменной принимает переменная Клон Указателя(*ссылка, переменная со звёздочкой). Например если указатель а содержит адрес переменной &с, то ЗНАЧЕНИЕ *а будет равняться ЗНАЧЕНИЮ с. Адрес &с содержится в указателе а, поэтому а* принимает значение переменной с. Пример: *а=&b; b=20; а содержит адрес переменной b, поэтому ЗНАЧЕНИЕ *а равно ЗНАЧЕНИЮ b, то есть 20. В этом примере можно догадаться об этом, но если вносить другие адреса переменных, то это знание помогает: Дальше по коду случается апдейт. a=&c; В переменной Указателе а содержался адрес переменной b, но мы присвоили в Указатель а адрес переменной с, поэтому теперь ЗНАЧЕНИЕ *а равняется ЗНАЧЕНИЮ переменной с. Что я и вывел на экран в коде. a=&c; Это выражение по моему это в чистом виде указатель, так как переменная а содержит адрес на другую переменную и ничего лишнего. Я этот текст сам медленно читаю чтоб понять только что написанное если что))) Сабзиро какой то в языке Си)) Я в шоке. Добавлено через 1 минуту
В данном примере *a=10; записан последним в коде, поэтому значение *a телепортируется в значение(ссылку *a) в этом коде int *a = &b; и значение а* стаёт равным значению b.
0
|
|||||||||||||||||||||
|
658 / 411 / 76
Регистрация: 21.09.2008
Сообщений: 1,411
|
||
| 21.08.2021, 08:20 | ||
|
В Сети нагуглить можно.
2
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
||||||||
| 21.08.2021, 09:20 | ||||||||
|
koeltrad, теперь свои рассуждения изложи кратко
![]()
1
|
||||||||
|
фрилансер
6499 / 5730 / 1133
Регистрация: 11.10.2019
Сообщений: 15,321
|
||
| 21.08.2021, 10:35 | ||
![]() дополнение: конечно же, для компилятора глубоко по барабану на пробелы, и куда лепить звёздочку каждый делает по своему вкусу. Лично для меня удобнее совмещать звёздочку с типом. кому-то вон и египетские скобки нравятся
0
|
||
|
4147 / 2725 / 433
Регистрация: 09.09.2017
Сообщений: 12,073
|
||||
| 21.08.2021, 10:55 | ||||
|
Открывающая скобка это ведь невероятно важный символ, его обязательно надо вынести на отдельную строчку, да еще и отступ добавить. Чтобы тело условия ну никак нельзя было с условием связать. Ну и чтобы раздуть код в ширину и высоту - так он солиднее смотрится.
0
|
||||
|
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
|
|
| 21.08.2021, 15:40 [ТС] | |
|
Чтоб кратко изложить мне надо ещё немного потренироваться.
Главная мысль в том что а и *а не одно и то же. а это указатель, *а это ссылка для значений.(хотя адрес тоже находится в значении переменной а, в переменной без звёздочки). Вторая главная мысль в том что: int*a=&b; вместе с адресом переменной &b, в переменную *а качует значение переменной b. Из &b в а переходит адрес, в *а переходит значение b. Значение может переходить в обратную сторону: из b в *а.
0
|
|
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
|||||
| 21.08.2021, 18:38 | |||||
b не инициализирована. Никакому "нулю" она не равна.
0
|
|||||
|
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
|
||||||||||||
| 21.08.2021, 21:52 [ТС] | ||||||||||||
----------------------- Версию со ссылками тем более никто не читал бы. Она скучнее. Телепортация- это я имел в виду сохранение значения переменной в нескольких местах одновременно. Добавлено через 6 минут А почему сохранение переменных во всех местах одновременно? Потому что если снизу приписать b=20; то значение у переменной b ВЫШЕ по коду появится. ВЫШЕ, Карл)) С простыми переменными так не сработает.
0
|
||||||||||||
|
из племени тумба-юбма
|
||
| 21.08.2021, 21:52 | ||
|
0
|
||
| 21.08.2021, 21:52 | |
|
Читаю книгу все работал а щас выдает такую ошибку
Читаю книгу Криса Касперски "Искусство дизассемблирования" читаю читаю не найду
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|