2012-02-07 2 views
-2

Если я создал структуру:и ЬурейеЕ Структуры в С

struct student { 
int id; 
char name [20]; 
student * next}; 

Что такое смысл:

typedef struct student student? 

Что делает student * next?

Спасибо!

+8

Рассматривали ли вы [вводную книгу] (http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)? –

ответ

3

A typedef создает новое название. Таким образом, они полностью эквивалентны:

student *next; 
struct student *next; 

В вашем примере структура и typedef имеют одинаковое имя. Но это может быть так:

struct something { 
/* ... */ 
}; 

typedef struct something student; 

Объявление typedef похоже на тип, который он вводит.


В качестве боковой стороны примечание, things are different in C++.

+0

И вы можете сделать короткое сокращение 'typedef struct something {...} something;' – Eregrith

+0

@Eregrith: Или даже 'typedef struct {...} что-то;' –

+0

@NiklasB. Да, действительно – Eregrith

0

В C при использовании структур вы должны использовать ключевое слово struct. Набрав typedef struct student student, вы можете сказать struct student, просто говоря student.

0

С названной структурой наиболее часто используется ключевое слово struct для создания экземпляров структуры и ссылки на тип структуры вообще.

typedef позволяет практически создать псевдоним для student вместо того, чтобы использовать struct student постоянно, таким образом, на самом деле делает его вести себя как встроенный тип.

1

typedef struct student student;

Это создать псевдоним для struct student с именем student.

Структурные теги и имена типов живут в двух разных пространствах имен в C (не верно в C++), поэтому разрешено использовать одно и то же имя для псевдонима и для тега.

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