C語言指針關於指針名稱以及所指變量的認識

幾個月沒有寫博客,我認爲這代表了幾個月以來我的編程技術沒有進步。

這次的指針問題其實是我上個月就拖下來的問題,我以爲我懂了,其實我沒有。

 

代碼如上。

目的其實是在一列entry的最前面再加一個entry。其實我知道有更簡單的方法。(然而其實代碼已經很簡單了)

原代碼(錯誤代碼如下)

 

當代碼header = element放在insertEntry函數定義的最後一行時,main函數中的header並不會改變。指針在函數中可以改變的是指針所指地址變量的值,比如header -> value , header -> next。這些是可以被改變的(在main中被改變),而在main以外的函數中改變header所指向的位置,並不會改變main函數中header所指向的位置(the value of the pointer is copied into the formal parameter when the function is called. Therefore, any change made to the formal parameter by the function does not affect the pointer that was passed to the function. Although the pointer cannot be changed by the function, the data elements that the pointer references can be changed!(Stephen G. Kochan, Programming in C)).當時讀教材裏的這句話感到似懂非懂,但應該就是這個意思。指針指的數據可以改變,指針本身和其他傳入函數的變量一樣也是個copy不能改變。

下面是一個值被改變的例子:

 

當第二個元素在函數內被移除,改變的是next的地址,在main函數中同樣被移除。

晚上試一試可不可以用指針的指針解決這個問題。另外有一個疑問:

 

output:

 

爲什麼可以有printf(message)這種python的存在。。。

最後,祝大家學有所成!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章