typedef struct net_path_s
{
uint8 path_len; /* network path length */
uint8 net_path[2 * MAX_ROUTE_LEN]; /* network path */
} net_path_t, *net_path_pt;
指標用于結構。同時擁有名稱和指標是否有意義?他們為什么要使用它?
uj5u.com熱心網友回復:
因為這個宣告是一個typedef它定義的型別,而不是變數。net_path_t是此結構型別的net_path_pt另一個名稱,是指向此結構型別的指標的另一個名稱。你不需要兩者兼得。
出于某種原因,有些人更喜歡寫net_path_pt而不是net_path_t*. 定義指標型別定義似乎在舊 API 中很常見。
uj5u.com熱心網友回復:
這些是同時完成的兩件事(甚至可能是三件事)。它們可以首先分解為:
struct net_path_s
{
uint8 path_len; /* network path length */
uint8 net_path[2 * MAX_ROUTE_LEN]; /* network path */
};
定義了一個struct.
第二:
typedef net_path_s net_path_t, *net_path_pt;
這會創建兩個typedefs。一個是net_path_t的別名,net_path_s另一個net_path_pt是 的別名net_path_s*。
后者在概念上是“創建指標型別”。
C 語法是“指向型別 X 的指標”。有char并且char*是一個指標。char*看起來只是 的變體char,如char a, *b, c;.
人類通常發現以“一種指向 X 的指標”的方式思考更容易。所以這就是 typedef 的基本原理,char*例如。pstr. 現在pstr看起來像它自己的型別。所以你寫char a, c; pstr b;。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318812.html
上一篇:Python的記憶體行為
