The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Стесняюсь спросить про указатели"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Стесняюсь спросить про указатели"  
Сообщение от VasKa on 07-Мрт-07, 00:47 
Извините за чайниковский вопрос - есть ли разница в способе объявления указателя, к примеру:
char*  str;
или
char  *str;
Или оба способа написания корректны и дадут указатель str на char?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Стесняюсь спросить про указатели"  
Сообщение от pvl email(ok) on 07-Мрт-07, 01:46 
>char*  str;
>или
>char  *str;

оба обьявят str как указатель на char.

выяснение места установки звездочки приведет к религиозной войне
Ж))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Стесняюсь спросить про указатели"  
Сообщение от rmf email on 07-Мрт-07, 08:46 
я против войны:

char * str

:)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Стесняюсь спросить про указатели"  
Сообщение от DeadLoco (??) on 08-Мрт-07, 14:47 
>я против войны:
>
>char * str
>
>:)

Синтаксис char* крайне чреват нездоровыми последствиями. В силу того, что видится вовсе не то, что распознает компилятор. Сравните:

    char*  var1,  var2;
    char  *var3,  var4;
    char  *var5, *var6;

typedef char* pchar;
    pchar  var7,  var8;


Воевать тут можно только по незнанию.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Стесняюсь спросить про указатели"  
Сообщение от Michelnok (ok) on 08-Мрт-07, 15:00 
>Воевать тут можно только по незнанию.

Ну, вообще-то обьявлять в одной строке переменные разных типов тоже не совсем кошерно...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Стесняюсь спросить про указатели"  
Сообщение от DeadLoco (??) on 08-Мрт-07, 16:13 
>>Воевать тут можно только по незнанию.
>
>Ну, вообще-то обьявлять в одной строке переменные разных типов тоже не совсем
>кошерно...

А разве очевидно, что

    char* var1, var2;

это разные типы? Разве синтаксис определения в сях не имеет вид

    type  varname[[, varname]...];

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Стесняюсь спросить про указатели"  
Сообщение от Michelnok (ok) on 08-Мрт-07, 16:19 

>А разве очевидно, что
>
>    char* var1, var2;
>
>это разные типы?

Нет. Но и

char *var1, var2;

тоже не есть хорошо. Гораздо лучше

char *var1;
char var2;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Стесняюсь спросить про указатели"  
Сообщение от rmf on 08-Мрт-07, 16:34 
>тоже не есть хорошо. Гораздо лучше
>
>char *var1;
>char var2;

Ну вот и пошла война (см. в постах выше)

А вот так?
По крайней мере логика в этом есть.

char* ptr1,ptr2,ptr3;
char  ch1,ch2,ch3;
int*  pint1,pint2;

ЗЫ: Мне пох. Сам иногда по разному пишу. -Wall нужно включать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Стесняюсь спросить про указатели"  
Сообщение от DeadLoco (??) on 08-Мрт-07, 19:51 
>А вот так?
>По крайней мере логика в этом есть.
>
>char* ptr1,ptr2,ptr3;
>char  ch1,ch2,ch3;
>int*  pint1,pint2;

В том то и дело, что в первой и третьей строке только ptr1 и pint1 будут указателями, а ptr2, ptr3 и pint2 будут символами и целым соответственно.

В данном случае мы имеем дело с несоответствием синтаксиса и семантики деклараций в сях.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру