我正在看這個Computerphile Video。在描述中,此代碼已發布。
在提供的代碼中,
THING *newelement(char *text)
{
THING *newp;
newp = (THING *) malloc (sizeof(THING));
newp->item = (char *)malloc(strlen(text) 1);
strcpy(newp->item, text);
newp -> next = NULL;
return newp;
}
他們有這個方法。在這個方法中,有一條線newp -> next = NULL。為什么我們必須顯式設定 next 欄位等于 null。
我是這樣考慮的。底線是我們將指向這個結構的指標回傳給用戶。用戶知道他們提供了帶有文本的方法,但沒有下一個參考。不管我們是否將下一個參考設定為空,如果用戶選擇取消參考下一個欄位,要么會發生段錯誤,要么會發生未定義的行為,這都是不受歡迎的。
uj5u.com熱心網友回復:
如果用戶選擇取消參考下一個欄位...
如果用戶能夠檢查該next欄位是否無效,他們可能不會取消參考它,因為他們應該知道取消參考無效指標是“錯誤的”(可能導致段錯誤或讀取垃圾資料)。因此,如果您設定next為NULL,您就可以讓用戶檢查該欄位是否有效。
如果您讓它未初始化(或者更確切地說,使用提供的任何垃圾資料進行初始化malloc),則用戶將假設指標有效,因為您不能保證它會是NULL.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315666.html
上一篇:將文本框放入陣列中
