Есть ли разница междуConst Char * Имя против Const Char * Название
const char* name = "name";
и
const char *name = "name";
Спасибо.
Есть ли разница междуConst Char * Имя против Const Char * Название
const char* name = "name";
и
const char *name = "name";
Спасибо.
нет.
Но есть разница между
const char* name = "hello", something = "else";
, который не будет работать, в то время как
const char *name = "hello", *something = "else";
РЕКОМЕНДУЕМЫМ
Нет, нет разницы, и оба объявления эквивалентны.
Обратите внимание, что C стиль, как правило, объявлять объекты указатель таким образом:
T *a;
в то время как стиль C++, как правило, объявлять объекты указатель таким образом:
T* a;
Это в основном дело вкуса.
Я лично использую const char* name
, потому что я хочу, чтобы было ясно, что этот тип является указателем (а char*
), но многие люди думают, что более правильным является использование const char *name
, чтобы показать, что *name
является указателем (для типа char
)
Оба анализируются как const char (*name) = "name";
. *
привязан к декларатору, а не спецификатору типа.
Объявления в C и C++ основаны на типах выражений, а не объектов. Если у вас есть указатель на некоторый тип T
, и вы хотите получить доступ к значению на который указывает на, то почтительное указатель:
x = *p;
Типом выражения*p
является T
, поэтому объявление указателя является
T *p;
В вашем случае, name
указывает на значение, которое начинается char
строковым. Если мы хотим, чтобы добраться до значения символа 'n'
, мы бы написать что-то вроде
const char start = *name; // assigns 'n' to start
Таким образом, тип выражения*name
является const char
, поэтому мы обычно пишут Декларацию
const char *name;
Потому что как синтаксис объявления C, пробелы вокруг маркера *
не имеют значения.Вы можете написать это как
const char *name;
const char* name;
const char * name;
или какая-либо другая комбинация. Я и многие другие предпочитают первую форму, потому что она точно отражает синтаксис объявления. Есть и другие, которые предпочитают вторую форму, хотя она представляет собой слегка вводящий в заблуждение вид синтаксиса, поскольку он подчеркивает тип name
.
Любой, кто претендует на третью форму, либо троллинг, либо сумасшедший.
В чем разница между ними вы можете объяснить? – user1334858
const char * a = "hello", something = "else"; это объявляет как указатель на тип char и что-то вроде char. вы можете исправить это, выполнив «typedef char * pchar», который позволит: pchar a = «hello», something = «else»; – Dmitry