簡體   English   中英

typedef結構體和指針

[英]typedef struct and pointer

當我們有:

      struct node{.....}
      typedef struct node Node;
      typedef Node *ptr;

ptr是指向struct節點或typedef的指針會改變它的含義嗎?

定義

typedef struct node *ptr;

ptr作為struct node *的別名。

之后,您可以執行任一操作

struct node *some_pointer;

要么

ptr some_pointer;

兩者都將變量some_pointer定義為指向node結構的指針。

但是 ,我不建議進行指針類型的類型別名。 它會使代碼更難以閱讀,理解和維護。

以我在這里在堆棧溢出中看到的最常見的問題為例,它涉及到指針類型別名:

ptr some_pointer = malloc(sizeof(ptr));

這樣就分配了足夠的內存來指向結構的指針 ,而不是整個結構。 如果使用例如

Node *some_pointer = malloc(sizeof(Node*));

該錯誤將更加清晰和容易找到。

請參見使用typedef指針是一個好主意嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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