簡體   English   中英

同時擁有名稱和指向結構的指針是否有意義?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM