Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
WarpDrive
Заблокирован
#1

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

07.11.2016, 10:51. Просмотров 330. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Правильное объявление переменной с точки зрения стиля [int *a vs int* a] (C++):

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

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

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

int main() и int _tmain(int argc, _TCHAR* argv[]) - C++
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный шаблон #include &quot;stdafx.h&quot; int...

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

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

17
Croessmah
Ушел
13775 / 8025 / 925
Регистрация: 27.09.2012
Сообщений: 19,768
Записей в блоге: 3
Завершенные тесты: 1
07.11.2016, 10:54 #2
Цитата Сообщение от WarpDrive Посмотреть сообщение
И всё таки, как корректней объявлять переменные?
Так, как этого требует соответствующий code-style.
1
Martein
675 / 86 / 13
Регистрация: 22.06.2014
Сообщений: 182
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
675 / 86 / 13
Регистрация: 22.06.2014
Сообщений: 182
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
675 / 86 / 13
Регистрация: 22.06.2014
Сообщений: 182
07.11.2016, 11:20 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Эксперт С++
3060 / 1705 / 265
Регистрация: 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
Сообщений: 6
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)

0
Martein
675 / 86 / 13
Регистрация: 22.06.2014
Сообщений: 182
07.11.2016, 15:43 #12
Mr.X, этим стилем никто не пользуется, увы.
0
Убежденный
Ушел с форума
Эксперт С++
15935 / 7245 / 1140
Регистрация: 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
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
07.11.2016, 16:01 #14
Цитата Сообщение от Убежденный Посмотреть сообщение
разбазаривать пробелы
Берите выше, я табами разделяю!
Цитата Сообщение от Убежденный Посмотреть сообщение
так неэстетично
Ну, опять же это дело вкуса. Мне кажется более эстетичным, если все по горизонтали выровнено.
Да и пробелы у нас пока бесплатные, чего же их, стервецов, жалеть?

Добавлено через 2 минуты
Цитата Сообщение от YDean Посмотреть сообщение
C++
1
int* a, b, c;
а теперь скажи, какого типа b и c ?
Ну, тут единственное можно сказать, что так писать вообще не следует.
0
Croessmah
Ушел
13775 / 8025 / 925
Регистрация: 27.09.2012
Сообщений: 19,768
Записей в блоге: 3
Завершенные тесты: 1
07.11.2016, 16:05 #15
Цитата Сообщение от Убежденный Посмотреть сообщение
Я предпочитаю так
В Google Code Style это Bad.
Так что, правильно так, как требует принятый стиль.
0
07.11.2016, 16:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2016, 16:05
Привет! Вот еще темы с ответами:

Функции float average(int arrray[],int from,int to) - C++
Напишите код функции float average(int arrray,int from,int to). Возвращаемым значением функции должно быть среднее значение элементов...

Написать функцию типа Beaty(int iA, int iB, int *pc) - C++
Задание: Написать функцию типа Beaty(int iA, int iB, int *pc); для выражения (iA+iB)/(iA*iB). Помогите решить!

Напишите функцию f(int& m1, int& m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N - C++
Напишите функцию f(int&amp; m1, int&amp; m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N. Решение. ...

Как понять int a(int x,int y, int z)? - C++
какое значение будет у переменной а?


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

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

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