8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
|
|||||||||||
1 | |||||||||||
Указатели, адрес переменной01.03.2020, 09:21. Показов 10971. Ответов 42
Метки нет Все метки)
(
int main(коллеги!)
Снова прошу меня поправить! Есть такой пример:
Но первая строчка - int *ptr; не вполне понятна как я это понимаю, что переменная - ptr интовая! только и всего! Правильно? Можно записать все вот так:
Ну если совсем примитивно то так: int *ptr - указатель с типом - int int ptr - переменная с типом - int
0
|
|
01.03.2020, 09:21 | |
Ответы с готовыми решениями:
42
Массивы и Указатели: распечатать таблицу,содержащую имя переменной,ее значение и адрес
Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение п |
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
|
|
01.03.2020, 12:21 | 21 |
Это не дает оснований утверждать, что этот код дает определенный результат. Может вывести мусор, может вылететь, undefined behaviour.
А память вообще здесь никто не выделяет(без new и malloc). Определение типа ptr_a = &a; присваивает ptr_a значение адреса a, память уже должна быть выделена.
1
|
2509 / 1232 / 455
Регистрация: 08.11.2016
Сообщений: 3,372
|
|
01.03.2020, 12:32 | 22 |
Правда...
Ну да, глобальные переменные инициализируются нулем. Уел... давненько я стандартов не читал... Добавлено через 5 минут Выходит так. все... пойду просплюсь...
1
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
01.03.2020, 12:51 | 23 | |||||
пиши вот так:
int* ptr тобишь, пиши int и звёздочку слитно звездочка - неотъемлемая часть типа. это - не int , это - int* int* никак не может быть только интовой, потому что уже со звездочкой. а вот здесь амперсанд & относится к имени total.это - операция взятия адреса у переменной total поэтому логично писать &total слитнотебя сбивает с толку звездочка, которую какой балбес записал рядом с именем. просто возьми себе за правило: если закорючка (апмперсанд или звездочка) относится к типу - пиши её слитно с типом и тогда сразу понятно, что закорючка - часть типа, а не имени. если пишешь слитно с именем - значит выполняется операция над именем.
1
|
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
|
|
01.03.2020, 15:35 [ТС] | 24 |
0
|
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
|
|||||||||||
01.03.2020, 15:45 | 25 | ||||||||||
Вот в этом случае:
А в этом
Так что написание звездочки рядом с именем имеет смысл (т.к. звездочка в данном случае делает указателем конкретную переменную)
2
|
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
|
|
01.03.2020, 15:52 [ТС] | 26 |
0
|
Комп_Оратор)
![]() |
|||||||||||||||||||||||||||||||
01.03.2020, 15:54 | 27 | ||||||||||||||||||||||||||||||
Герб не при чем. Я лично, тоже не понимал почему нужно отделять тип значения от символа ссылки или указателя. Это делают для того, чтобы не ошибаться при объявлениях в списках:
1
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
01.03.2020, 15:54 | 28 | |||||
никогда не ведись на авторитетов.
ты можешь использовать стиль, который облегчает жизнь. или не использовать - выбор за тобой. а вот в этом случае:
и где должно размещаться имя переменной. хорошая новость в том, что подобный говнокод запрещен регламентом большинства компаний. да и люди в массе своей адекватные. и понимают, почему писать вот так: int *a, *b; - плохая идея.
1
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.03.2020, 15:59 | 30 |
именно что бы не обмануться, нормальные люди и пишут вот так:
и что бы нормальные люди ничайно не забыли о том, что они - нормальные, в нормальных компаниях на уровне регламента запрещено писать всякий однострочный говнокод
1
|
Комп_Оратор)
![]() |
|
01.03.2020, 16:05 | 31 |
R_U_S_V, беда этого поста в том, что он имеет актуальное (для новичков это БОЛЬ!) и ясное название. Поэтому, не суждено ему стать полезным.
Помните? ![]() Теперь легче книжки по перелистывать, чем загуглить и найти легкий и простой материал. Добавлено через 1 минуту в нормальных компаниях запрещено называть балбесами тех, кто этого не заслуживает. Я обо всем написал. Пишите, что хотите, - развлекайтесь) А тому же Шилдту всё едино. Его ругают даже те, кто и не читал толком. Но его знают и уважают.
1
|
18472 / 9629 / 2356
Регистрация: 30.01.2014
Сообщений: 16,882
|
||||||
01.03.2020, 16:07 | 32 | |||||
Синтаксис и семантика.
С точки зрения синтаксиса, звездочка в записи
С точки зрения семантики - к имени типа. Поэтому оба ответа правильные. Вопрос лишь в том, что выбирать за главное. У нас, например, вообще никуда звездочку не прижимают. Ни к имени переменной, ни к имени типа. Да, с замечанием про однострочное объявление нескольких переменных лично я согласен. Лучше так не писать.
1
|
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
|
|
01.03.2020, 16:10 [ТС] | 33 |
Лучше так:
int a; int b; int c; чем так int a, b, c; Блин, а я то наоборот все старался как-то кол-во строчек сокращать! Но в пределах разума конечно, что прочесть можно было...
0
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.03.2020, 16:18 | 34 |
1
|
18472 / 9629 / 2356
Регистрация: 30.01.2014
Сообщений: 16,882
|
|
01.03.2020, 16:23 | 35 |
Понятность кода на первом месте должна быть.
Синтаксис С позволяет не особо напрягаясь превратить программу нечитаемое месиво. Поэтому несколько искусственных правил для предотвращения этого было бы уместно ввести. Собственно, сборник таких правил для C++ существует - называется Cpp Core Guidelines. Вот ссылка на обсуждаемое правило: https://isocpp.github.io/CppCo... s-name-one Добавлено через 2 минуты Аналогии, как правило, ложны, даже если они такие яркие. По существу же вопроса: мы провели общее голосование и коллегиально решили не прижимать. С тех пор никого это не напрягает. А новички быстро перестраиваются.
1
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.03.2020, 16:28 | 36 |
даже предполагать не берусь,
почему вы выбрали самый стрёмный вариант: ни рыба, ни мясо.
1
|
18472 / 9629 / 2356
Регистрация: 30.01.2014
Сообщений: 16,882
|
|
01.03.2020, 16:35 | 37 |
Именно поэтому и выбрали. Чтобы не развивать условный рефлекс. Благодаря этому решению все теперь спокойно читают любой код, как с прижатой вправо звездочкой, так и с прижатой влево. И ни у кого не возникает желания исправить это. Потому что понимание происходящего в коде не завязано на форму представления.
1
|
Комп_Оратор)
![]() |
||||||
01.03.2020, 16:35 | 38 | |||||
Конечно, лучше читается запись в столбик. И каждую можно прокомментировать. Но так делается не всегда. И далеко не везде запрещено писать объявления в списке.
Вот надуманный пример, но это лишь напоминание о том, что объявления можно делать и в областях объявлений различных операторов:
Не по теме: хана топику, - пойду я)
1
|
8 / 7 / 1
Регистрация: 25.12.2019
Сообщений: 321
|
|
01.03.2020, 16:41 [ТС] | 39 |
0
|
![]() 8738 / 4316 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.03.2020, 16:50 | 40 |
по моим наблюдениям, люди свободно читают любой код,
потому что у них уже есть соответствующий опыт (квалификация). а не потому, что следуют бесхребетному регламенту. тобишь, человек уже просто насмотрелся на все возможные стили. его желудок вполне переваривает и так, и сяк, и суржик тоже. печально, чоу. code-style для того и существует: что бы улучшать (вплоть до автоматических реакций мозга) понимание происходящего в коде. у вас же, с таким же успехом можно вообще отказаться от code-style, и писать как кому заблогарасудиццо.
0
|
01.03.2020, 16:50 | |
01.03.2020, 16:50 | |
Помогаю со студенческими работами здесь
40
Указатели и ссылки. Как сохранить адрес? Указатели в переменной!!! взять адрес переменной Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |