Форум программистов, компьютерный форум CyberForum.ru

Об указателях - C++

Восстановить пароль Регистрация
 
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
20.08.2012, 21:31     Об указателях #1
В чем разница между этими двумя строчками?

C++
1
2
int* x;
int *x;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
20.08.2012, 21:36     Об указателях #2
разницы нет
TopLoader
 Аватар для TopLoader
41 / 41 / 4
Регистрация: 10.12.2011
Сообщений: 128
20.08.2012, 22:20     Об указателях #3
Egor138, разницы нет, пока вы объявляете по одной переменной. Но посмотрите на следующее объявление:
C++
1
2
int* x, y;
int *x, *y;
Операторы * и & не обладают свойством дистрибутивности и показанное выше объявление может привести к ошибке. В первом случае объявляется указатель на целое x и целое y (не указатель!). Во втором случае — два указателя на целое. Вот такая разница
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
20.08.2012, 22:21     Об указателях #4
Очевидно же, что в первой строчке пробел после звездочки, во второй - после int.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
20.08.2012, 22:35     Об указателях #5
ИМХО 2 луче так как данная запись может вызвать непонятность
C++
1
2
3
4
int* a,b 
//ну а
int *a,b
//вполне понятна  )
4iFF
 Аватар для 4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
20.08.2012, 22:53     Об указателях #6
xADMIRALx, согласен с вами это действительно облегчает визуальное восприятие кода и так пишут в некоторых книгах.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
20.08.2012, 23:27     Об указателях #7
хех, обсуждалось уже. тема больше относится к священным войнам.
от себя еще раз добавлю, что
int *p; - хуже, чем int* p; потому что * относится к типу, а не к имени объекта.
У сторонников int *p; как правило один аргумент: так понятнее, когда несколько переменных объявляются в одной строке. Однако, это считается плохим стилем. тем более когда переменные разнотипны. Плохой стиль потому что трудно найти глазами в коде место объявления переменной, если она не первая и если в такой объявлении много переменных. Когда каждая переменная на своей строке объявляется - ее проще найти, блок объявлений похож на табличку, которая лучше воспринимается, чем однострочная запись. Сюда же, т.к. такой блок хорошо воспринимается, то и пропустить его тоже легко несмотря на большее количество строк кода, если в данным момент интересен какой-то другой кусок кода.

Это еще ведет к плаванию стиля написания кодаполучается, если ему следовать, то и функции нужно так писать:
int *SomeFunction(); - возвращаемый тип визуально плохо выделяется.
int* const cptr; - тут несоответствие стиля. куда ставить звездочку?

Мое мнение: символы, отвечающие за тип (*, &, const и прочее) должны группироваться вместе, имена переменных должны отстоять от них. Иначе каша какая-то. Чего уж тогда никто не пишет это без пробелов: int*p; ?

Ну а реальность такова, что стиль чаще выбран за вас, и ничего не остается, как следовать ему, засунув свои предпочтения поглубже.
4iFF
 Аватар для 4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
20.08.2012, 23:40     Об указателях #8
Цитата Сообщение от DU Посмотреть сообщение
Однако, это считается плохим стилем
Плохой стиль???Первый раз слышу, наоборот некоторые книги учат иначе, ну или просто "на выбор" предоставляют как это делать.

Добавлено через 5 минут
Было бы не плохо лит-ру подтверждающее это утверждение.На стиль которым я пользуюсь вот лит-ра:
"How to Programm on the C++" 5/e - H.M. & P.J. Deitel.

Добавлено через 1 минуту
Но хотя в "Visual C++ 2010" - Ivor Horton наоборот автор считает...
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
20.08.2012, 23:40     Об указателях #9
только в одной книге встречал объяснение, почему выбран такой стиль, а не другой. в остальных просто пишут так или иначе, без объяснения. ну а люди, которые их читают привыкиют.

Ну я со своей колокольни попытался объяснить, почему он плохой. Зачем тут литературу или ссылки приводить. Я на опыт свой полагался.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 00:04     Об указателях
Еще ссылки по теме:

Ошибка в указателях C++
Совсем запутался в указателях C++
C++ Об указателях по философски-математически

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

Или воспользуйтесь поиском по форуму:
4iFF
 Аватар для 4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
21.08.2012, 00:04     Об указателях #10
DU, ну ок.Похоже это действительно "священная война" =).
Yandex
Объявления
21.08.2012, 00:04     Об указателях
Ответ Создать тему
Опции темы

Текущее время: 14:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru