簡體   English   中英

C從其typedef中分配一個結構

[英]C malloc a struct from its typedef

鑒於以下結構

struct foo
{
  int b;
  int a;
  int r;
};

我想從此結構創建一個新類型,如下所示

typedef struct foo * foo_t;

也就是說foo_t應該等於struct foo的指針。
所以struct foo *var; <=> foo_t var;

為什么我不能從其類型中分配此結構?

foo_t var = malloc(sizeof(*foo_t)); 在編譯時拋出錯誤

錯誤: foo_t之前的預期表達式
foo_t var = malloc(sizeof(( * * foo_t)));

因為sizeof的操作數必須是表達式或帶括號的類型名稱。 *foo_t都不是。

我強烈建議不要將指針隱藏在typedef后面。 但是,您可以執行以下操作:

foo_t var = malloc(sizeof *var);

var不是類型,因此*var是有效的表達式。

您必須為foo_t類型而不是sizeof(* foo_t)大小的變量分配一部分大小為sizeof(struct foo)的內存。 使用函數malloc可以分配指針指向的一部分內存(確定的輸入大小)。 您的變量var是foo_t類型,即指向foo結構的指針。 因此,分配變量var的正確語法是:

foo_t var=malloc(sizeof(struct foo));

暫無
暫無

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

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