Другие языки программирования и технологии
Чем отличается в языке С++ объявление указателя на переменную int *a от int* a?
Чем отличается в языке С++ объявление указателя на переменную int *a от int* a?
Работать будет в обоих случаях.
Однако, лучше писать так:
int *ptrToVariableA = NULL;
префикс p или ptr вместе со "звездочкой" рядом сразу дадут понять, что это указатель, а не что-то другое. Название ptrToVariableA не вполне удачно вообще, но удачнее, чем просто "a", т. к. сразу можно понять, что это указатель на некоторую переменную, а не она сама.
Указатель до инициализации хранит мусор, как и любая другая переменная. Но в то же время, этот "мусор" вполне может оказаться валидным адресом. Пусть, к примеру, у нас есть указатель. Каким образом узнать, инициализирован он или нет? В общем случае никак. Поэтому лучше заранее и сразу инициализировать его NULL
Далее можно работать с указателем, оборачивая его в минимальную проверку,
пример:
if (ptrToVariableA != NULL) {
...//Всё хорошо, работаем с указателем.
}
Подробные названия переменных и общепринятые конвенции именования помогут организовать защищенное программирование и более легко понимать код спустя какое-то время.
Однако, лучше писать так:
int *ptrToVariableA = NULL;
префикс p или ptr вместе со "звездочкой" рядом сразу дадут понять, что это указатель, а не что-то другое. Название ptrToVariableA не вполне удачно вообще, но удачнее, чем просто "a", т. к. сразу можно понять, что это указатель на некоторую переменную, а не она сама.
Указатель до инициализации хранит мусор, как и любая другая переменная. Но в то же время, этот "мусор" вполне может оказаться валидным адресом. Пусть, к примеру, у нас есть указатель. Каким образом узнать, инициализирован он или нет? В общем случае никак. Поэтому лучше заранее и сразу инициализировать его NULL
Далее можно работать с указателем, оборачивая его в минимальную проверку,
пример:
if (ptrToVariableA != NULL) {
...//Всё хорошо, работаем с указателем.
}
Подробные названия переменных и общепринятые конвенции именования помогут организовать защищенное программирование и более легко понимать код спустя какое-то время.
И можно даже int*a написать :)
В случае с int *a; четко видно, что переменная - указатель
в случае int* a; появляется мнимое ощущение, что это тип-указатель, а это не так ( int* a,b; - какой тип переменной b ?)
в случае int* a; появляется мнимое ощущение, что это тип-указатель, а это не так ( int* a,b; - какой тип переменной b ?)
Кроме записи ни чем не отличается. В си++ разрешается и такое и другое объявление, а программист уже использует как ему будет удобнее (нагляднее)
В отличие от кого-то из здесь ответивших, я профессионал в C++.
Гайдлайн от Гугла запрещает только вариант написания & и * между двух пробелов. Вариант без пробелов - не упомянут. А вот писать вместе с типом и писать вместе с именем - оба варианта указаны как верные.
Однако лучше писать их вместе с типом. Но если проект, в котором вы работаете, диктует обратное, а вы не руководитель - то вы можете максимум предложить изменить правила стиля.
Еще на всякий случай замечу, что *, то есть указатели, в C++ следует вообще избегать, в отличие от Си.
Ответчик выше пишет про общепринятые конвенции, и в самом деле, его идея с camelCase (ptrToVariableA) похожа на венгерскую нотацию - но она малораспространена сегодня в C++.
И если все-таки следовать венгерской нотации или чему-то подобному, то, конечно, только p, а никак не ptr-префикс, и никакой тавтологии вроде "ToVariable".
Гайдлайн от Гугла запрещает только вариант написания & и * между двух пробелов. Вариант без пробелов - не упомянут. А вот писать вместе с типом и писать вместе с именем - оба варианта указаны как верные.
Однако лучше писать их вместе с типом. Но если проект, в котором вы работаете, диктует обратное, а вы не руководитель - то вы можете максимум предложить изменить правила стиля.
Еще на всякий случай замечу, что *, то есть указатели, в C++ следует вообще избегать, в отличие от Си.
Ответчик выше пишет про общепринятые конвенции, и в самом деле, его идея с camelCase (ptrToVariableA) похожа на венгерскую нотацию - но она малораспространена сегодня в C++.
И если все-таки следовать венгерской нотации или чему-то подобному, то, конечно, только p, а никак не ptr-префикс, и никакой тавтологии вроде "ToVariable".
Ничем, эстетикой. Пробелы имеют значения только между литерами (ключевыми словами и переменными)
Похожие вопросы
- [c++] не работает long int переменная объявленная как long int a; занимает всего 4 байта ((( Что может быть не так?
- Как осуществить операцию сложения в с++ без операции присваивания ? int a=5; int b=6; int c=a+b; ( без "= ")
- Скорость работы указателей и переменных? С++
- Чем указатели лучше переменных?
- Указатели это переменные в которых содержатся адреса других переменных?
- с++ внутри. Как из int преобразовать в char и *char и обратно. И есть ли аналог функций switch(a) где a не char a int?
- Возможно задаю глупый вопрос, так что извиняйте, почему бы в языках программирования не сделать динамические переменные?
- СИ: "int a[3]={1, 2, 3}, * p=a+1" Чему равно значение выражения "p[0]-2"? И что вообще здесь происходит?
- Объясните пожалуйста на бытовом языке, что такое указатель в СИ, приведите бытовой пример, описывающий эту операцию?
- Чем отличается библиотеки языка от пространства имен в с++? Чем отличается библиотеки языка от пространства имен в с++?
int* a,b;
какой тип переменной b ?