結構體指標

2021-10-01 18:44:05 字數 1606 閱讀 3426

結構體指標 分為 

1:指向結構體變數的指標

2:指向結構體陣列的指標

1.1宣告結構體 和 函式指標   

注意:宣告不占用記憶體 ,定義才占用記憶體

/*************宣告結構體**************/

typedef struct

msg_t;

/***********宣告函式指標*************/

typedef void(*prxparsefunc)(msg_t *pummsg);

typedef void(*ptxpackfunc)(uint8_t *pu8db);

/************宣告結構體*************/

typedef struct

msg_list_t;

1.2

指向結構體變數的指標->定義結構體並賦初始  和  傳送列印函式

static  msg_list_t  g_umtxmsg = ;  //給結構體賦初值

/***** 定義傳送函式 *****/

void sendaa(uint8_t *pu8db)

; for(int i = 0; i < 8; i++)

}

1.3  

指向結構體變數的指標  --> 傳送函式

/***** pummsg:結構體指標,指向msg_list_t結構體變數 *******/

void sch_txregister(msg_list_t *pummsg, uint8_t u8num)

}

1.4

指向結構體變數的指標->

主函式

void main(void)

2.1

指向結構體陣列的指標 ->定義結構體陣列 和 傳送函式 

/****定義結構體陣列,g_umtxmsglist 是陣列,它的成員是結構體*****/

static msg_list_t g_umtxmsglist[tx_num] =,

};void sendaa(uint8_t *pu8db)

; for(int i = 0; i < 8; i++) }

void sendbb(uint8_t *pu8db)

; for (int i = 0; i < 8; i++)

}

2.2

指向結構體陣列的指標 -> 定義傳送函式

/*******pummsglist指標 指向的是結構體陣列

等價於pummsglist,陣列作為行參時退化為指標***********/

void sch_txlistregister(msg_list_t *pummsglist, uint8_t u8num)

pumlist++; // 陣列++

}}

2.2

指向結構體陣列的指標 -> 主函式

void main(void)

總結:

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

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

結構體指標

定義結構體 typedef struct str stu t 建立結構體指標,存放某乙個結構體變數的首位址 stu t p2stu null 重新命名結構體指標名 typedef將使得原來申明的結構體變數成為資料型別 typedef stu t p2stu t 建立結構體指標,存放某乙個結構體變數的...

結構體指標

指向結構體型別變數的使用 首先讓我們定義結構體 struct stu 再定義指向結構體型別變數的指標變數 struct stu p1,p2 定義指標變數p 1 p 2,分別指向結構體型別變數。引用形式為 指標變數 成員 例7 2 對指向結構體型別變數的正確使用。輸入乙個結構體型別變數的成員,並輸出。...