1 回答

TA貢獻(xiàn)1712條經(jīng)驗 獲得超3個贊
typedef struct LNode
{
int num,pwd;
struct LNode *next;
};
這段代碼是結(jié)構(gòu)體的定義部分,該結(jié)構(gòu)體被命名為LNode,它具有2個int類型的變量:num與pwd,還具有一個指針變量,指針變量next所指向的是另一個LNode結(jié)構(gòu)體。
結(jié)構(gòu)體作為一個自定義的數(shù)據(jù)類型,在創(chuàng)建成功后是僅返回所分配內(nèi)存的首地址,也就是一個指針,因此你需要使用指針變量來使其持久化。
結(jié)構(gòu)體在默認(rèn)情況下使用時,需要在結(jié)構(gòu)體名稱前添加struct關(guān)鍵字,這樣程序才能知道你是在創(chuàng)建一個結(jié)構(gòu)體的實例,你可以把結(jié)構(gòu)體理解為自定義數(shù)據(jù)類型,使用方法也類似。
比如
int i,j,k; //聲明3個變量,變量類型為int
struct LNode *i,*j,*k //聲明3個指針變量,分別指向3個結(jié)構(gòu)體,結(jié)構(gòu)體類型為LNode
如果采用你這種定義,在以后,每次想創(chuàng)建一個LNode結(jié)構(gòu)體實例時,都需要加一個struct關(guān)鍵字,這很令人反感,所以通常會利用typedef做一些改進(jìn):
typedef A B 的作用是將A與B在編程時視為相同的代碼
例如
typedef int CHINA;
那么
int i;
就等同于
CHINA i;
因此將你的代碼更改為:
typedef struct LNode //你的代碼中雖然也用到了typedef關(guān)鍵字,但是替代項為空
{ //所以你的代碼中刪掉typedef也沒有任何影響
int num,pwd;
struct LNode *next;
}N;
那最后一行代碼就可以簡化為
N *head,*p,*pt;
添加回答
舉報