Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
WarpDrive
Заблокирован
1

Правильное объявление переменной с точки зрения стиля [int *a vs int* a]

07.11.2016, 10:51. Просмотров 852. Ответов 17
Метки нет (Все метки)

И всё таки, как корректней объявлять переменные?
1. int* a, int& a, int** a
или
2. int *a, int &a, int **a

?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2016, 10:51
Ответы с готовыми решениями:

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?
Не понимаю, с чего начинать. Заранее спс.

Что означает ошибка too few arguments to function ‘int my_func(int, int)’ (язык C++)?
В чём проблема? #include &lt;iostream&gt; int my_func (int i, int j){ int z; ...

int main() и int _tmain(int argc, _TCHAR* argv[])
При создании нового консольного приложения Microsoft Visual С++ 2010 Express...

17
Croessmah
++Ͻ
14777 / 8453 / 1605
Регистрация: 27.09.2012
Сообщений: 20,803
Записей в блоге: 2
Завершенные тесты: 1
07.11.2016, 10:54 2
Цитата Сообщение от WarpDrive Посмотреть сообщение
И всё таки, как корректней объявлять переменные?
Так, как этого требует соответствующий code-style.
1
Martein
686 / 95 / 17
Регистрация: 22.06.2014
Сообщений: 204
07.11.2016, 10:56 3
WarpDrive, правильно и так и этак. Зависит только от того как читаешь такой код в голове:
1) Переменная а хранит тип int*, при разыменовании которого можно получить значение типа int и так далее.
2) Переменная а является указателем, указывающим на данные типа int.
Так что вопрос о вкусе и цвете фломастеров. У Mozilla и WebKit - первый вариант, у Google - второй тип.

Во втором случае удобно не запутаться в объявлении переменной и указателя в одной строке:
int a, *pa.
pa - указатель на значение типа int, a - переменная со значением типа int. Но это опять же является спором о том, что переменные разных типов надо объявлять на разных строках.
4
WarpDrive
Заблокирован
07.11.2016, 10:58  [ТС] 4
На мой взгляд правильно должно быть int* a, т.к. int* - это тип, то есть указатель на переменную типа int ...
0
Martein
686 / 95 / 17
Регистрация: 22.06.2014
Сообщений: 204
07.11.2016, 11:04 5
WarpDrive, добро пожаловать на тёмную сторону Mozilla Style и WebKit Style.
А вообще юзайте clang-format, предварительно обваляв в панировочных настройках и стилевых приправах тут:
http://zed0.co.uk/clang-format-configurator/
1
WarpDrive
Заблокирован
07.11.2016, 11:13  [ТС] 6
Цитата Сообщение от Martein Посмотреть сообщение
А вообще юзайте clang-format
Да я пишу на QtCreator-е, там можно и кланговский стиль выбрать, но...
Да...всё это дело вкуса, я допустим вообще не терплю написания на одной строчке оператора и фигурной скобки типа того do {
0
Martein
686 / 95 / 17
Регистрация: 22.06.2014
Сообщений: 204
07.11.2016, 11:20 7
Лучший ответ Сообщение было отмечено WarpDrive как решение

Решение

WarpDrive, в QtCreator'е в окне "О модулях" включите Beautefier, перезапустите QtCreator и в настройках найдите "Стилизатор" с иконкой туфельки. Там на вкладке clang format пропишите путь к clang-format и выберите требуемый стиль из имеющихся знаменитых или укажите собственный, основанный на настройках выше приведённого конфигуратора. =)
2
WarpDrive
Заблокирован
07.11.2016, 11:25  [ТС] 8
Цитата Сообщение от Martein Посмотреть сообщение
с иконкой туфельки.
Я видел, но никогда не пользовался. А файлики стилей походу формируются по ссылке выше (http://zed0.co.uk/clang-format-configurator/), то есть я там файлик сгенерил и вшторил его в туфельку? Спасибо, буду знать
0
Mr.X
Эксперт С++
3183 / 1710 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
07.11.2016, 12:21 9
Цитата Сообщение от WarpDrive Посмотреть сообщение
И всё таки, как корректней объявлять переменные?
1. int* a, int& a, int** a
или
2. int *a, int &a, int **a
?
Зачем же так себя ограничивать? Мне кажется, что оба хуже.
Мне вот кажется неэстетичным засорять имена переменных или типов всякими посторонними символами.
Я вот так предпочитаю:
C++
1
2
3
int     *   a;
int     &   a; 
int     **  a;
0
YDean
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 7
07.11.2016, 13:07 10
C++
1
int*   a, b, c;
а теперь скажи, какого типа b и c ?
0
Croessmah
07.11.2016, 13:12
  #11

Не по теме:

Цитата Сообщение от YDean Посмотреть сообщение
а теперь скажи, какого типа b и c ?
decltype(b), decltype(c) :D

0
Martein
686 / 95 / 17
Регистрация: 22.06.2014
Сообщений: 204
07.11.2016, 15:43 12
Mr.X, этим стилем никто не пользуется, увы.
0
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
07.11.2016, 15:47 13
Mr.X, зачем же так неэстетично разбазаривать пробелы налево и направо?


Я предпочитаю так:
C++
1
2
3
int * a;
int & a; 
int ** a;
1
Mr.X
Эксперт С++
3183 / 1710 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
07.11.2016, 16:01 14
Цитата Сообщение от Убежденный Посмотреть сообщение
разбазаривать пробелы
Берите выше, я табами разделяю!
Цитата Сообщение от Убежденный Посмотреть сообщение
так неэстетично
Ну, опять же это дело вкуса. Мне кажется более эстетичным, если все по горизонтали выровнено.
Да и пробелы у нас пока бесплатные, чего же их, стервецов, жалеть?

Добавлено через 2 минуты
Цитата Сообщение от YDean Посмотреть сообщение
C++
1
int* a, b, c;
а теперь скажи, какого типа b и c ?
Ну, тут единственное можно сказать, что так писать вообще не следует.
0
Croessmah
++Ͻ
14777 / 8453 / 1605
Регистрация: 27.09.2012
Сообщений: 20,803
Записей в блоге: 2
Завершенные тесты: 1
07.11.2016, 16:05 15
Цитата Сообщение от Убежденный Посмотреть сообщение
Я предпочитаю так
В Google Code Style это Bad.
Так что, правильно так, как требует принятый стиль.
0
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
07.11.2016, 16:22 16
Цитата Сообщение от Croessmah Посмотреть сообщение
В Google Code Style это Bad.
Ну а мне-то что? Я ж не в Google работаю, пишу как хочу...
))
0
Croessmah
++Ͻ
14777 / 8453 / 1605
Регистрация: 27.09.2012
Сообщений: 20,803
Записей в блоге: 2
Завершенные тесты: 1
07.11.2016, 16:24 17
Цитата Сообщение от Убежденный Посмотреть сообщение
пишу как хочу
вот так:
C++
1
2
3
4
            int
        *
    v
;
2
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
07.11.2016, 16:27 18
А давайте сюда еще const и volatile добавим, вот холивар начнется!!!
Это ж сколько вариантов расстановки!
0
07.11.2016, 16:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2016, 16:27

[Linker error] undefined reference to `sterling(int, int, int)'
#include &lt;iostream&gt; using namespace std; int sterling(int,int,int); int...

[Linker Error] Unresolved external 'Sort(int near*near ,int, int)
не могу понять в чем ошибка при компиляции ошибок не выдает при запуске...

Функции float average(int arrray[],int from,int to)
Напишите код функции float average(int arrray,int from,int to). Возвращаемым...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

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