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

Где поместить звезду в обозначение указателя на C и С++

Возможный дубликат:
Правильный способ объявления переменных указателя в C/С++

В течение некоторого времени меня раздражало следующее: где я должен поместить звезду в нотацию с указателем.

int *var; // 1

и

int* var; // 2

очевидно, делают то же самое, и обе записи правильны, но я нахожу, что большинство литературы и кода, на которые я смотрю, используют 1-ю нотацию.

не было бы более "правильным" использовать 2-ю нотацию, отделяя тип и имя переменной пробелом, а не смешивая маркеры типа и переменной?

4b9b3361

Ответ 1

Нет. Никогда. <g>

Но рассмотрим:

int* var1, var2;

Здесь размещение * вводит в заблуждение, так как оно не относится к var2, которое является int, а не int*.

Ответ 2

Соглашение о стиле кодирования ядра Linux:

int *ptr1 , *ptr2;

Поэтому я думаю, что вы должны принять это как соглашение.

При объявлении данных указателя или функции, которая возвращает тип указателя, предпочтительное использование * находится рядом с именем данных или именем функции, а не рядом с именем типа. Примеры:

char *linux_banner;
unsigned long long memparse(char *ptr, char **retptr);
char *match_strdup(substring_t *s);

Ответ 3

Я считаю, что часть причины этой нотации такова, что использование и объявление переменной выглядят одинаково.

int *var;
int x;
x = *var;

Вы также можете думать об этом как о том, что разыменование var даст вам int.