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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
#1

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

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

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

C++
1
2
int* x;
int *x;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2012, 21:31     Об указателях
Посмотрите здесь:

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

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

Стек на указателях не компилируется - C++
#include <iostream> using std:: cin; using std:: cout; using std:: endl; struct NodePtr { char Value; NodePtr* Next; ...

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

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

Написать стек на указателях - C++
хочю знать как написать стёк на указателях мне нужно чтобы можно было добавлять новые елемнты сколько угодно а уберать не обязтельно ...

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

передать в функцию стек на указателях - C++
Всем привет. Есть стек, реализованный через указатели. Необходимо его отправить в две функции не по значению. Проблема в том,...

Обьясните простым языком об указателях * и & - C++
Всё что в книгах прочитал, но толком не могу понять зачем нужны * и &. Обьясните кто может, простым языком...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru