Подтвердить что ты не робот

Разница между заявками int * p и int * p

Не могли бы вы рассказать разницу между объявлением int * p и int * p?

Спасибо...

4b9b3361

Ответ 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

Два объявления эквивалентны при объявлении одного указателя. Для получения дополнительной информации см. Ссылку

Ответ 4

эти 2 объявления точно такие же!