struct在C語言中是一個關鍵字,用於定義結構資料型別。
問題中的兩種定義的區別在於第一種是給student資料型別,重新定義了一個類型別名,而第二種則單純的表示一種叫做student的資料結構型別。兩者的主要區別在於後面直接定義變數時。如下程式碼,則可以直接在結構體後面定義一個zhang_san的結構體變數。
struct student
{
int num;
struct student *next;
}zhang_san;
而第一種的定義,則會出現錯誤。
typedef struct student
}student zhang_san;
擴充套件:
“結構”是一種構造資料型別,現在一般叫做使用者自定義資料型別,它是由若干“成員”組成的。 每一個成員可以是一個基本資料型別或者又是一個構造型別。 結構即是一種“構造”而成的資料型別, 那麼在說明和使用之前必須先定義它,也就是構造它。如同在說明和呼叫函式之前要先定義一樣。
定義一個結構的一般形式為:
struct結構名
//成員表列
};
成員表由若干個成員組成, 每個成員都是該結構的一個組成部分。對每個成員也必須作型別說明,其形式為:“型別說明符 成員名;”。成員名的命名應符合識別符號的書寫規定。例如:
struct stu
char name[20];
char sex;
float score;
在這個結構定義中,結構名為stu,該結構由4個成員組成。 第一個成員為num,整型變數;第二個成員為name,字元型陣列;第三個成員為sex,字元型變數;第四個成員為score,浮點型變數。 應注意在括號後的分號是必不可少的。
struct在C語言中是一個關鍵字,用於定義結構資料型別。
問題中的兩種定義的區別在於第一種是給student資料型別,重新定義了一個類型別名,而第二種則單純的表示一種叫做student的資料結構型別。兩者的主要區別在於後面直接定義變數時。如下程式碼,則可以直接在結構體後面定義一個zhang_san的結構體變數。
struct student
{
int num;
struct student *next;
}zhang_san;
而第一種的定義,則會出現錯誤。
typedef struct student
{
int num;
struct student *next;
}student zhang_san;
擴充套件:
“結構”是一種構造資料型別,現在一般叫做使用者自定義資料型別,它是由若干“成員”組成的。 每一個成員可以是一個基本資料型別或者又是一個構造型別。 結構即是一種“構造”而成的資料型別, 那麼在說明和使用之前必須先定義它,也就是構造它。如同在說明和呼叫函式之前要先定義一樣。
定義一個結構的一般形式為:
struct結構名
{
//成員表列
};
成員表由若干個成員組成, 每個成員都是該結構的一個組成部分。對每個成員也必須作型別說明,其形式為:“型別說明符 成員名;”。成員名的命名應符合識別符號的書寫規定。例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
};
在這個結構定義中,結構名為stu,該結構由4個成員組成。 第一個成員為num,整型變數;第二個成員為name,字元型陣列;第三個成員為sex,字元型變數;第四個成員為score,浮點型變數。 應注意在括號後的分號是必不可少的。