2015-03-07 3 views
-1

У меня есть структура, которая я не понимаю:Указатели Структуры (программирование C)

typedef struct { 
    int x; 
    int y; 
} Position; 

typedef struct { 
    int id; 
    Position upper_left; 
    Position lower_right; 
    int priority; 
} *Window_Description; 

Я не понимаю, почему struct *Window_Description имеет звездочку, прежде всего? Является ли это указателем на структуру? Потому что, когда я создам некоторый Window_Description, это будет указатель?

+1

Да, его указатель на структуру – user7

+0

См. [Это хорошая идея для указателей typedef?] (Http://stackoverflow.com/questions/750178/is-it-a-good-idea-to- ЬурейеЕ-указатели)? –

ответ

1

Определение

typedef struct { 
    int id; 
    Position upper_left; 
    Position lower_right; 
    int priority; 
} *Window_Description; 

равна

struct Window_Description_Struct 
{ 
    int id; 
    Position upper_left; 
    Position lower_right; 
    int priority; 
}; 

typedef struct Window_Description_Struct *Window_Description; 

То есть, это делает Window_Description псевдоним для указателя на структуру.

+0

Хорошо, так я мог бы объявить структуры с помощью Window_Description w = {...}; ? Если да, зачем создавать его как указатель на структуру? Почему бы просто не объявить его только как структуру? Спасибо – Friendly67

+0

@CptDesro Нет, потому что 'Window_Description' является * указателем *. Например, вы можете сделать это, например. 'Window_Description w = malloc (sizeof * w);' Для чего объявить его как тип указателя? Я действительно не знаю, и я вообще советую вам не делать этого, поскольку он имеет тенденцию скрывать тот факт, что тип является типом указателя. –

+0

Его пример от моего учителя ... который я действительно не понимаю. Итак, если я хочу создать Window_Description? Как я это заявляю? – Friendly67

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