Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для Egor138
32 / 13 / 3
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2

Об указателях

20.08.2012, 21:31. Показов 842. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В чем разница между этими двумя строчками?

C++
1
2
int* x;
int *x;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.08.2012, 21:31
Ответы с готовыми решениями:

Ошибка в указателях
Здравствуйте, не понимаю почему выводит мусор. Вроде бы все правильно сделал. Знаю что можно было сделать p = rand(); но меня это не...

немного об указателях
есть код: #include <iostream> #include <windows.h> using namespace std; int main() { int inta=1234; int...

Запутался в указателях
Поиск элемента, равного figure void remove_helper(std::shared_ptr<BTreeItem> *item,const std::shared_ptr<Figure>& figure) { ...

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

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

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

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

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

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

Ну я со своей колокольни попытался объяснить, почему он плохой. Зачем тут литературу или ссылки приводить. Я на опыт свой полагался.
0
 Аватар для 4iFF
21 / 21 / 1
Регистрация: 06.07.2012
Сообщений: 88
21.08.2012, 00:04
DU, ну ок.Похоже это действительно "священная война" =).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.08.2012, 00:04
Помогаю со студенческими работами здесь

Реализация стека на указателях
Стек на указателях: #include <iostream> using std::cin; using std::cout; using std::endl; enum FirstNodeEnum{NoFirstNode,...

Об указателях по философски-математически
Допустим, имеем код: int *p; Есть мнение, что истолковать запись можно двояко: 1) р - тип, указывающий на инт; 2) р -...

Реализация дерева на указателях
Задание такое:Пусть А, В,С – деревья соответствующего типа, узлы которых могут содержать целочисленные значения. Требуется реализовать...

Совсем запутался в указателях
Шестую строку не могу понять, по моему перед массивом var должен стоять &. const int MAX = 3; int _tmain(int argc, _TCHAR* argv) {...

Реализация очереди на указателях
Очередь на указателях: #include <iostream> using std::cin; using std::cout; using std::endl; const int Number = 10; enum...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru