例如就以下這個例子來講,
newnode->next=first;
first=newnode;如果同學在解讀這段程式碼的時候,把它看作是「newnode->next等於first,然後first又等於newnode」,接下來你就準備頭昏腦脹了,因為這樣的解讀就好像在你的腦海裡產生無窮迴圈一樣。
實際在程式語言遇到 = 時,你的解讀方向必須從右到左,而且=必須唸作「指定給」,所以以newnode->next=first為例,它必須唸作「first指定給newnode->next」,所以「newnode->next擁有first的值」,但此時newnode->next和first仍然是各自獨立的變數,所以first可以重新被指定成newnode,而不會去影響到newnode->next的值。
如果這裡的說明還是看不懂,那就說明關於「等於」和「指定」的意思還沒有弄清楚。
「等於」就是相等的意思,在這樣的條件下,我們對於在相等關係裡的任何成員做任何事都是具有相同意義的,所以對任何一個成員做的任何事,等於是對其他成員做的意思。
但「指定」是「分派、安排」的意思,我可以把一個東西分派給A,也可以把它分派給B,甚至同時分派給A、B,但若要使用,在同一個時間裡只能有一個人使用,另外一方面,我可以指定一個全新的東西給A或B,而且它完全代替、取代原本分派的東西。所以在這個定義下,我們可以知道它的作用和「等於」有很大的不同,所以必須有不一樣的理解方式。
對於「=」的理解方式,你正如我所面所說的狀況嗎?如果是的話,重新理解一下「=」的意義吧。
感謝
回覆刪除好像解釋的不夠白話,希望有看的人能夠看得懂..
回覆刪除