下面的代碼是相同的函數中:這個指針是否安全地聲明?
File *curr = dir -> head_file;
...
f -> next = curr;
是f -> next
實際上指向dir -> head_file
或局部變量curr
?如同一樣,一旦這個函數退出,當curr
消失或指向別的東西時會出現問題嗎?
下面的代碼是相同的函數中:這個指針是否安全地聲明?
File *curr = dir -> head_file;
...
f -> next = curr;
是f -> next
實際上指向dir -> head_file
或局部變量curr
?如同一樣,一旦這個函數退出,當curr
消失或指向別的東西時會出現問題嗎?
f->next
是存儲在curr
中的值的副本。如果curr
發生變化,那麼不會影響f->next
如果沒有分配給後者。 curr
和f->next
都沒有指向dir -> head_file
;他們都是副本。
f -> next = curr;
使f->next
指向哪裏curr
點,在這種情況下,它是dir -> head_file
,它不破壞指針curr
或更改curr
指向方向。
這是安全的,它指向dir->header_file
。
請注意類型和注意&curr
有一個類型File **
這是不同的。獲取您使用的變量的地址&
:&curr
您清楚C賦值的工作原理嗎? – nneonneo
@nneonneo我對C賦值基本沒問題,但是我不清楚改變'curr'是否會影響'f - > next'。不過,我現在明白了。謝謝! – sbl03