[英]Does it make sense to have both name and a pointer to a structure?
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;
指針用於結構。 同時擁有名稱和指針是否有意義? 他們為什么要使用它?
因為這個聲明是一個typedef
它定義了類型,而不是變量。 net_path_t
是該結構類型的另一個名稱, net_path_pt
是指向該結構類型的指針的另一個名稱。 你不需要兩者兼得。
出於某種原因,有些人更喜歡寫net_path_pt
而不是net_path_t*
。 定義指針類型定義似乎在舊 API 中很常見。
這些是同時完成的兩件事(甚至可能是三件事)。 它們可以首先分解為:
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;
這創建了兩個typedef
s。 一個是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;
char a, c; pstr b;
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.