2013-11-11 4 views
0

Скажем, у вас есть это ..Два разных типа звездочек для указателя?

int fry = 50; 

Теперь вэнь делает указатель и ссылки на значение, звездочка может быть размещена двумя способами:

int* d1 = &fry; 

и ...

int *d1 = &fry; 

Мне было интересно, в чем разница и в какой ситуации было бы лучше всего использовать их? Благодаря!

+2

На самом деле нет разницы. Но это не значит, что некоторые люди не будут спорить о том, сколько ангелов вы можете поместить на голову булавки. – Duck

+0

чисто стиль. Единственное место, которое имеет значение, это использование 'const int * const name' – Serdalis

+0

Дубликат http://stackoverflow.com/questions/180401/pointer-declarations-in-c-placement-of-the-asterisk и многие другие. –

ответ

2

В двух примерах, которые вы даете, нет разницы. Что вы должны использовать, следуйте стилю кода, в котором вы работаете.

Обратите внимание, что * привязывается к переменной, а не типу. Таким образом,

int *this_is_a_pointer, this_is_just_an_int; 

и

int* this_is_a_pointer, this_is_just_an_int; 

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

int* this_is_a_pointer; 
int this_is_just_an_int; 

или

int *this_is_a_pointer; 
int this_is_just_an_int; 

в зависимости от стиля, который используется.

+0

Так чисто предпочтение стиля. Благодаря! –

4

Нет никакой разницы. Вы даже можете сделать int*d1 и int * d1.

На мой взгляд, следует отдавать предпочтение int *d1: этот выбор имеет особую полезность в предотвращении путаницы:

int* d1, d2; 
int *d1, d2; 

Эти заявления как объявить одно целое и один указатель на целое число. Первая версия выглядит довольно вводящей в заблуждение.

+1

Лучший ответ. Важно помнить, что '*' привязан к переменной, а не типу данных. – nhgrif

Смежные вопросы