[英]Trouble in understanding a line of code in c
我正在進行一項練習,其中這是一段代碼:
typedef struct node
{
size_t size;
struct node *next;
} node_t;
byte heap[SIZE];
node_t *node_list;
void heap_init()
{
node_list = (node_t*) heap;
node_list->size = SIZE;
node_list->next = NULL;
}
但我站在這條線上有一些麻煩:
node_list = (node_t*) heap;
heap
是一個大小為SIZE
的字節數組。
node_list
是node_t
類型的指針。 該指針分配給數組heap
的第一個字節。 這樣做是將node_list
分配給分配的內存位置。
我猜測列表的下一個指針將被分配到該數組的更遠位置。
這很可能是模擬全局變量中的堆,並避免使用不能用於某些嵌入式系統的malloc
。
代碼使用為heap
分配的內存來存儲node_t
實例,而不是使用malloc
功能函數之一來分配它。
變量heap
本身降級為指向byte*
的指針,代碼顯示“我想將byte*
重新解釋為node_t*
指針”。
請注意,要使其工作,值SIZE
必須至少為sizeof(node_t)
,否則node_t
實例將不適合heap
變量。
你指向的代碼似乎是使用一種不太常見的分配內存的 方法 ,即字節數組 ...而不是malloc或calloc的常用方法
現在
node_list =(node_t *)堆;
所有人都可以從這一行推斷,因為堆在這里是一個字節數組,並且
node_list是指向 struct node類型的指針 ,指向名為heap的字節數組的起始地址 ,因為指針是byte * type,所以它被類型化為struct node * type。
可以推斷它就像struct node * ptr =(struct node *)malloc(sizeof(struct node));
這里(struct node *)用在malloc前面(sizeof(struct node)); to mallpecast由malloc返回的void指針類型,以匹配'='等號左側所需的struct node類型。
希望能幫助到你 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.