Не могли бы вы рассказать разницу между объявлением int * p и int * p?
Спасибо...
Ответ 1
Существует без разницы.
Это вопрос обозначения, а не семантики. Второй менее вводит в заблуждение, потому что
int *a, b;
ясно объявляет a int* и a int, тогда как
int* a, b;
выглядит так, будто он объявляет два указателя, когда он действительно делает то же, что и выше.
Ответ 2
Это хороший вопрос.
int* p
широко используется программистами на С++
int* p, q ошибочно подразумевает, что оба p и q являются указателями (приводящими к предпочтению объявления этого на двух строках, что также улучшает читаемость при назначении и упрощает быстрое вырезание/вставку или комментарии конкретных строк/переменных)
int* p визуально отделяет тип от идентификатора
*p однозначно указывает на разыменование (при условии, что вы помещаете пробелы вокруг своего двоичного operator* ala 2 * 3)
в С++ ...&x явно принимает адрес, а ...& x должен объявлять ссылочную переменную, а ... & ... - побитовый оператор
int *p
широко используется программистами C
int *p, q четко отражает p как указатель, а q не является.
int *p визуально путает тип с идентификатором
визуально неотличим от разыменования указателя (к лучшему или худшему)
При всем этом предпочтения людей во многом основаны на том, к чему они привыкли.
Ответ 3
Два объявления эквивалентны при объявлении одного указателя. Для получения дополнительной информации см. Ссылку