指標在結構體中的使用

2021-10-11 03:15:45 字數 916 閱讀 2714

結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體宣告的變數。

struct tag  variable-list ;
在一般情況下,tag、member-list、variable-list這3部分至少要出現2個。

首先是結構體在被定義後,系統是不會為其分配空間的,除非在定義時也建立了它的乙個或若干個實體。然後是結構體內部可以定義該結構體自身的指標,也可以定義其他結構體的指標。

struct  name

;

在使用結構體時,如果沒有在定義時就建立變數,則需要先建立乙個變數,或者使用malloc()為其申請空間。

struct name first;

//建立具體的變數

struct name* c=

malloc

(sizeof

(struct a));

//使用malloc函式申請空間;並用相應的結構體指標指向它

在使用結構體指標時,使用運算子「->」來使指標指向結構體中的某一成員。

c->p=3;

//使指標指向結構體中的p並為其賦值

若使用函式時需要用結構體指標作為引數傳入,則需要注意具體是哪乙個結構體的指標,若傳入的指標沒有指定型別,則應在函式內部對傳入的指標做強制型別轉換,否則傳入的指標不知道自己內部有什麼成員。這是因為在傳引數進入函式時,只是將引數值傳進去了,並沒有說明引數值的型別,引數值型別的判斷依靠的是函式本身要求什麼型別的引數傳入。函式的要求指明了傳入的引數值具體是什麼型別的。

同時,由於結構體內部可以定義自身的指標,因此可以實現多個相同的結構體變數相互呼叫,應用例項就是鍊錶。

結構體指標中包含結構體指標

將c 轉化為c的過程中,一些c 的特性無法使用 類內私有變數在類內公共函式中使用,轉化為c的時候選擇用malloc的方式,申請一段記憶體空間去儲存它,在函式中傳指標形參去操作這些變數。這時候遇到乙個問題,結構體中包含了另乙個結構體的指標,這導致了我malloc的時候,另乙個結構體中的記憶體空間沒有申...

結構體指標與結構體中變數的指標

結構體指標與結構體變數指標的區別,在進行實現的工程專案中會有許多地方用到結構體指標的情況,在使用這前都需要先malloc一塊空間之後才能有空間進入儲存資料,例項 如下 include includetypedef struct student student t,pstudent t void pr...

在結構體中使用函式指標的例子

void menu11 void void menu12 void void menu21 void typedef struct table table table 3 void setup void loop 以下是 分析 typedef struct table 定義乙個結構體,裡面包含了乙個...