Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/30: Рейтинг темы: голосов - 30, средняя оценка - 4.73
Заблокирован

Как грамотней писать объявление указателя?

24.09.2014, 13:11. Показов 6936. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну собственно сабж.
C++
1
int* a;
или
C++
1
int *a;
Куда Фен Шуй рекомендует звёздочку ставить ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2014, 13:11
Ответы с готовыми решениями:

Как грамотней писать код?
Добрый день. 1. Как правильней перебирать контейнер (карта, хеш, список...) - обычным for(int = 0;...) или с использованием итераторов? ...

Как обратиться к полям структуры через указатель и объявление указателя на структуру
Как обратиться к полям структуры через указатель и объявление указателя на структуру? #include "stdAfx.h" #include...

Компилятор не принимает объявление указателя на функцию
Портирую библиотеку коннектора на си для tarantool. Код целиком тут. Туллчейн - cygwin - cmake - clion. При сборке возникает две...

55
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.09.2014, 20:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от castaway Посмотреть сообщение
Mr.X, я думаю это не от языка зависит, а от человека.
Традиции оформления кода в этих языках очень разные.
Си - это полуассемблер, и сишники стремятся приблизить по виду свой код к ассемблерному.
Язык С++ гораздо более сложный, и тут писать код с помощью буковок, чертиков и крестиков просто не получится, поэтому он по стилю ближе к естественному языку.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.09.2014, 21:08
Цитата Сообщение от Mr.X Посмотреть сообщение
Язык С++ гораздо более сложный, и тут писать код с помощью буковок, чертиков и крестиков просто не получится, поэтому он по стилю ближе к естественному языку.
Кто писал чертики и крестики - тот и будет продолжать их писать. Это точно не от языка зависит.
Просто язык С более древний, а раньше даже кол-во символов под переменную было ограничено. Но никто не мешал писать в комментариях подробные соответствия сокращениям.

Добавлено через 26 секунд
Кстати, регулярки ввели именно в плюсах
0
Заблокирован
24.09.2014, 21:16  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
typedef int* int_ptr;
Всё, для себя я решил. Буду писать int* a; т.к. это действительно корректно и по фен шую. Собственно я всегда так и оформлял, просто увидел, что QtCreator делает Int *a, вот и подумал, может его фен шуй и делал, эээ нее - оказывается не он
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.09.2014, 21:24
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
typedef int* int_ptr;
Хватит терпеть этот анахронизм.
C++
1
using int_ptr = int*;
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
24.09.2014, 21:24
Как грамотней писать объявление указателя?
Мне кажется, это как раз одна из таких мелочей, на которых не
стоит вообще заострять внимание. Никакой смысловой нагрузки
наличие или отсутствие пробела рядом со звездочкой не несет.
Лишь бы было согласованно хотя бы с тем, что написано рядом, и
понятно тому, кто читает код. Большего этот вопрос не стоит.

Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
просто увидел, что QtCreator делает Int *a, вот и подумал, может его фен шуй и делал, эээ нее - оказывается не он
Э-э, сколько еще разочарований ждет !..
Вокруг такая куча библиотек, и в каждой свои стилевые отличия -
где отступы по-разному расставляются, где CamelCase, а где
подчеркивание, где между скобочками дополнительные пробелы
есть, а где нет, и так далее. Копировать или подстраиваться
под это каждый раз бессмысленно.
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.09.2014, 21:27
Цитата Сообщение от MrGluck Посмотреть сообщение
Кто писал чертики и крестики - тот и будет продолжать их писать.
Ну, раньше программисты даже гордились, что их программы никому не понятны. Согласно современным воззрениям, программа тем ценнее, чем она понятнее. Сишники более привержены древним традициям.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
24.09.2014, 21:49
Цитата Сообщение от Mr.X Посмотреть сообщение
никто из них имя переменной не засоряет никакими звездочками, а Майерс посередине ставит. Или вы сишников имели в виду?
Я мог бы подобрать ссылки и может так и сделаю. Нет, сишников не имел ввиду. Писать звёздочку посредине наверное тоже хорошо. Так же хорошо как и в любом другом способе. Тогда типом данных будет, скажем, int, звёздочка или амперсанд будут типомразновидностью переменной... Почему нет.
Дело и в том, что ссылка на указатель это мелочь в сравнении с объявлением указателя на функцию, которая возвращает массивы указателей на функции возвращающие.... Когда появляются скобки, они прижимают звёздочку к имени. К колбу или... Ну в общем в имени она. Имя бессловесно как корова. Со звёздочкой. Помните:
Что в вымени, тебе моём?
Кош-мар.
Получается, что продуктивность отделения звёздочки от выимени не всегда есть.j
То есть, - зажмуриться, написать в typedef'е и забыть. Пусть компилятор мучается при подстановках. Ему не привыкать.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.09.2014, 22:27
Цитата Сообщение от Убежденный Посмотреть сообщение
Мне кажется, это как раз одна из таких мелочей, на которых не
стоит вообще заострять внимание.
Ну да. Тем более, что такие неудобно обозначенные сишные типы, как указатель, массив и символьная строка, по какому-то странному совпадению оказались неудобны и в использовании, и заменены в С++ более удобными.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2014, 02:09
А почему мой пост удалили без сообщения? Я так предлагал (чтобы никому обидно не было):
C++
1
int * a;
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
25.09.2014, 06:10
Цитата Сообщение от alsav22 Посмотреть сообщение
А почему мой пост удалили без сообщения? Я так предлагал (чтобы никому обидно не было):
C++
1
int * a;
Ну, мы с Майерсом уже давно так пишем, так что первородства вам тут не отспорить.
А если серьезно, то, если писать параметры функции в столбик, как специалисты советуют, то оно само так получается
C++
1
2
3
4
5
6
int     func
            (
                std::string     const   &   s,
                int                     &   a,
                int                     *   b
            );
ибо по-другому будет просто нечитаемо.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2014, 06:25
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, мы с Майерсом уже давно так пишем
Насчёт Майерса серьёзно?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
25.09.2014, 06:41
Цитата Сообщение от alsav22 Посмотреть сообщение
Насчёт Майерса серьёзно?
Да, но перехвалил я его, так как он непоследователен, у него через раз. Иногда к имени прижимает.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2014, 06:46
Цитата Сообщение от Mr.X Посмотреть сообщение
у него через раз. Иногда к имени прижимает.
Он все три варианта использует. Когда посередине, то без пробелов. В крайнем случае, там, где я видел. Может в других местах и с пробелами есть. Из этого можно сделать вывод, что Майерс считает этот вопрос второстепенным.
0
Модератор
Эксперт С++
 Аватар для zss
13789 / 10981 / 6492
Регистрация: 18.12.2011
Сообщений: 29,276
25.09.2014, 08:23
Что-то никто не высказался по существу.
Как Вам такой нюанс?:
C++
1
int* a,b;
А посему я предпочитаю
C++
1
int  *a,*b;
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
25.09.2014, 08:25
Цитата Сообщение от zss Посмотреть сообщение
Что-то никто не высказался по существу.
Да ладно, надо же пообсуждать куда звездочку прижимать)
Цитата Сообщение от zss Посмотреть сообщение
Как Вам такой нюанс?
Было уже во втором посте.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
25.09.2014, 08:42
Цитата Сообщение от zss Посмотреть сообщение
Что-то никто не высказался по существу.
Как Вам такой нюанс?
Внимательнее надо быть (1, 2, 3).

Добавлено через 15 минут
А вообще, тема, конечно, нажористая. В стиле Николая Васильевича, прям:
Цитата Сообщение от Н.В. Гоголь
"Вишь ты, - сказал один другому, - вон какое колесо! что ты думаешь, доедет то колесо, если б случилось, в Москву или не доедет?" - "Доедет", - отвечал другой. "А в Казань-то, я думаю, не доедет?" - "В Казань не доедет", - отвечал другой.
2
Заблокирован
25.09.2014, 09:01  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
А если серьезно, то, если писать параметры функции в столбик, как специалисты советуют, то оно само так получается
int * * func
* * * * * * (
* * * * * * * * std::string * * const * & * s,
* * * * * * * * int * * * * * * * * * * & * a,
* * * * * * * * int * * * * * * * * * * * * b
* * * * * * );
А это по - моему полные щи Такое прокатывает на мониторах с хорошей диагональю, причём с приоритетом высоты. Нет, ну на самом деле, сжирают драгоценное место по высоте. Хотя конечно можно использовать сворачиваемые плюшки IDE, ну тип свернул, если хочешь развернуть - нажал на плюсик слева.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
25.09.2014, 09:12
Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
это по - моему полные щи
Это пока у тебя учебные записульки в пределах 100-200 строк. А вот когда (если) программирование на C++ станет работой и будут проекты на тысячи или даже десятки тысяч строк, с командой программистов в несколько десятков человек, тогда, вполне возможно, сам начнёшь как Mr.X писать.
0
25.09.2014, 09:26

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
А вот когда (если) программирование на C++ станет работой и будут проекты на тысячи или даже десятки тысяч строк, с командой программистов в несколько десятков человек, тогда, вполне возможно, сам начнёшь как Mr.X писать.
Нет, потому что код в таком стиле сложно набирать и сложно поддерживать по очевидным причинам.

0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
25.09.2014, 09:30
Цитата Сообщение от gru74ik Посмотреть сообщение
А вот когда (если) программирование на C++ станет работой и будут проекты на тысячи или даже десятки тысяч строк, с командой программистов в несколько десятков человек, тогда, вполне возможно, сам начнёшь как Mr.X писать.
Цитата Сообщение от 0x10 Посмотреть сообщение
Нет, потому что код в таком стиле сложно набирать и сложно поддерживать по очевидным причинам.
Не буду спорить, потому что сам ещё только учусь. Проще спросить автора кода - использует ли он такой стиль форматирования в реальных больших проектах на работе, или это просто личные предпочтения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2014, 09:30

Объявление указателя на структуру в объявлении структуры
struct node { int data; struct node * next; }; Зачем может понадобится такое объявление?

Объясните объявление указателя на объект класса
Доброго времени суток! Подскажите, пожалуйста, что означает данная строчка? B *b; B - это класс. *b - указатель....

Рекурсивный include, как грамотней сделать?
Привет! Что - то я совсем онубел :D Есть два класса, вот их хэдэры: //Base.h #pragma once #include "Child.h" class...

Как наиболее красиво писать объявление функций?
Допустим, функция возвращает 3 аргумента. def make_smth(): return a, b, c А другая функция принимает эти 3 аргумента: def...

Объявление глобального указателя всего проекта
Здравствуйте! Программа состоит из нескольких модулей. В одном из модулей написан класс, объект которого используется в других модулях. Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Химера правил, администрации порталов, законы и беззаконие.
Hrethgir 26.06.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11904&stc=1&d=1782459438 У меня сейчас так везде по форуму - не могу создавать сообщений, но запись по случаю этому. . .
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru