結構體指標變數的定義

2022-02-05 10:10:02 字數 1407 閱讀 8064

定義方式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 結構名 結構指標變數名 結構名和結構變數時兩個不同的概念,不能混淆。結構名只能表示乙個結構形式,編譯系統並...