English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

struct node *newnode = (struct node*)malloc(sizeof(struct node));
//是用來宣告新節點 能不能一個一個指令解釋來看勒?!

2006-08-22 22:27:21 · 3 個解答 · 發問者 kiey 1 in 電腦與網際網路 程式設計

3 個解答

node (節點) 是個使用者定義但應該未命名的資結構體資料型態。
struct node * newnode = (struct node*)   malloc(   sizeof( struct node ));
結構 節點 指標 新節點 = 轉成節點指標 配置記憶體 大小 結構 節點;
= 右邊 配置一個和 結構 節點 一樣大小的空間,
= 左邊 宣告一個 結構 節點 的指標變數指向那個空間。
用完後要記得 free(newnode);

它 類似
struct node newnode[1];
但這個用法用完後不用 free

2006-08-23 18:33:13 補充:
謝謝 IRA,我現在就做。

2006-08-23 18:50:50 補充:
將之前寫的第二、三列改寫如下,比較清楚:sizeof( ) 大小 傳回 ( ) 內的東東佔記憶體的大小。最內層的 ( ) 內寫著 struct node,就是要 sizeof 計算 struct node 的大小。malloc( ) 配置記憶體 配置 () 內的數量的記憶體,傳回型態為 void*。好的 compiler 會要求一定要轉型。好的設計師在這裡一定會用強迫轉型 (cast) 。

2006-08-23 18:51:06 補充:
* newnode 指標 新節點 這東東叫 newnode。前面的 * 是說,newnode 是個指標 (pointer) ,不是變數本身。(struct node*) 轉成指標 強迫轉型成 struct node型的指標。struct node 結構 節點 宣告一個東東,它是使用者自定的 node 型態的變數。

2006-08-23 03:28:44 · answer #1 · answered by ? 7 · 0 0

struct node => 有一個data structure的structure 名稱叫node

sizeof(a) => a所佔用的資料大小
sizeof(struct node) => node這個data structure的size

malloc( size) => 要一塊記憶體, 大小為size, malloc會傳回記憶體指標
malloc(sizeof(struct node)) => 動態配置一塊記憶體
計憶體的大小等於node這個data structure的大小

(struct node *)pointer => 把pointer強制轉型為一個指向struct node的指標
(struct node *)malloc(sizeof(struct node))
=>動態配置一塊node這個data structure大小的記憶體
並將記憶體指標強制轉型成指向struct node的指標

2006-08-23 10:41:57 · answer #2 · answered by Mark 5 · 0 0

Jacob Lee
是否要把它拆開來解說.kiey會比較明白.
struct node *
newnode
=
(struct node*)
malloc(
sizeof(
struct node
)
);

2006-08-23 07:59:45 · answer #3 · answered by ? 4 · 0 0

fedest.com, questions and answers