定義方式1:
typedefstructlnode*linklist;定義方式2:
structlnode;typedefstructlnode*linklist;以上兩個定義方式是等價的,是將*linklist定 義為struct lnode型別,即linklist被定義為乙個型別名。這樣就可以用linklist來定義說明新的變數了,如:
linklistl;
一、結構體的定義格式一般如下:
typedef struct sci
u8 data[maxlen];
u16 pos;
}tsci;
二、訪問結構體成員的基本方法有兩種:
1、定義乙個結構體變數直接訪問成員變數;
2、定義乙個結構體指標變數間接訪問結構體變數。
(1) 結構體變數訪問
tsci sci1;
sci1.data [ sci1.pos++]= num;
(2) 結構體指標變數訪問
tsci *sci2,b;
sci2= &b; //指標變數必須初始化 指向乙個結構體變數
sci2->data[sci2->pos++] = num;
(3)(*sci1).data sci2->data 效果等效
三、如何實現結構體被其他函式呼叫
假設a檔案中定義了乙個結構體,b檔案可以對a中定義的結構體進行訪問和修改資料。
1、 在a.h中定義結構體
typedef struct sci
u8 data[maxlen];
u16 pos;
}tsci;
2、在a.c檔案中宣告乙個結構體變數
tsci sci;
3、要實現b.c檔案能夠呼叫a中的結構體,需要做到兩點:
(1)在b.h中包含a.h標頭檔案;
(2)a.c中實現返回結構體變數位址的函式。
實現函式如下:
tsci * get_address(void) //返回結構體變數的位址 (此tsci結構體須在a.h中定義)
return &sci;
(4)在b.c中定義乙個結構體指標變數,通過呼叫get_address函式得到sci的位址,將此位址賦給b.h中定義的結構體指標變數。
tsci *psci2;
psci2 = get_address();
psci2->data[psci2->pos++]=num;
這樣就可以實現對a.c中的結構體變數sci的資料訪問、修改。
結構體指標與結構體中變數的指標
結構體指標與結構體變數指標的區別,在進行實現的工程專案中會有許多地方用到結構體指標的情況,在使用這前都需要先malloc一塊空間之後才能有空間進入儲存資料,例項 如下 include includetypedef struct student student t,pstudent t void pr...
結構體變數和指向結構體變數的指標
目錄概念 記憶體分配 物件的引用 結構體變數和結構體指標變數作形參的區別 以結構體變數和結構體指標變數形參的函式呼叫 結構體變數是指將不同的資料型別整合成乙個有機的整體,以便於呼叫。struct student student stud1 stud1就是結構體變數結構體指標變數是指指向結構體變數的指...
C指向結構體變數的指標 結構指標變數
乙個指標變數當用來指向乙個結構體變數時,稱之為結構體指標變數。結構體指標變數中的值是所指向的結構變數的首位址。通過結構指標變數即可訪問該結構的變數。結構指標變數說明的一般形式如下 struct 結構名 結構指標變數名 結構名和結構變數時兩個不同的概念,不能混淆。結構名只能表示乙個結構形式,編譯系統並...