Извините за чайниковский вопрос - есть ли разница в способе объявления указателя, к примеру:
char* str;
или
char *str;
Или оба способа написания корректны и дадут указатель str на char?
>char* str;
>или
>char *str;оба обьявят str как указатель на char.
выяснение места установки звездочки приведет к религиозной войне
Ж))
я против войны:char * str
:)
>я против войны:
>
>char * str
>
>:)Синтаксис char* крайне чреват нездоровыми последствиями. В силу того, что видится вовсе не то, что распознает компилятор. Сравните:
char* var1, var2;
char *var3, var4;
char *var5, *var6;typedef char* pchar;
pchar var7, var8;
Воевать тут можно только по незнанию.
>Воевать тут можно только по незнанию.Ну, вообще-то обьявлять в одной строке переменные разных типов тоже не совсем кошерно...
>>Воевать тут можно только по незнанию.
>
>Ну, вообще-то обьявлять в одной строке переменные разных типов тоже не совсем
>кошерно...А разве очевидно, что
char* var1, var2;
это разные типы? Разве синтаксис определения в сях не имеет вид
type varname[[, varname]...];
Модификатор-звездочка относится не к типу, а к переменной, причем не просто к переменной, а к той конкретной переменной, перед которой он стоит. Поэтому, хоть синтаксис и допускает двигать звездочку туда-сюда, семантически звездочка должна быть ассоциирована с именем переменной - и только.
>А разве очевидно, что
>
> char* var1, var2;
>
>это разные типы?Нет. Но и
char *var1, var2;
тоже не есть хорошо. Гораздо лучше
char *var1;
char var2;
>тоже не есть хорошо. Гораздо лучше
>
>char *var1;
>char var2;Ну вот и пошла война (см. в постах выше)
А вот так?
По крайней мере логика в этом есть.char* ptr1,ptr2,ptr3;
char ch1,ch2,ch3;
int* pint1,pint2;ЗЫ: Мне пох. Сам иногда по разному пишу. -Wall нужно включать.
>А вот так?
>По крайней мере логика в этом есть.
>
>char* ptr1,ptr2,ptr3;
>char ch1,ch2,ch3;
>int* pint1,pint2;В том то и дело, что в первой и третьей строке только ptr1 и pint1 будут указателями, а ptr2, ptr3 и pint2 будут символами и целым соответственно.
В данном случае мы имеем дело с несоответствием синтаксиса и семантики деклараций в сях.
Разумеется, если декларировать ровно одну переменную в каждой строке, то синтаксис всегда будет соответствовать семантике, но на это нельзя полагаться. Это вопрос дисциплины кодирования, и лучше придерживаться более строгого и верного синтаксиса.