剛剛程式設計遇到了乙個問題,**如下:
#include
struct nodetree[
101]
;int loc;
node*
creat()
bool
build
(node* t,
char c)
return
true;}
intmain()
return0;
}
預期結果,我本來想達到一種效果,就是將t傳進去,然後對t做修改,返回來修改後的t。
可是出現錯誤,main裡面的t和build裡面的t不是乙個t。值傳不回來。
問題分析,我的目標是想達到修改後的t可以傳回來。因為我認為它是乙個指標,指標不就是位址傳遞或者說是引用傳遞嗎?
可是經過翻閱部落格,和自己的思考後,我總結出乙個結論,就實質而言,指標傳遞也是值傳遞型別。只不過我們不操作指標值傳遞的內容,而是操作其內容所指向的位址的內容。
理解如圖:
核心思想:
指標變數也是變數,只不過這個變數的值是個位址而已
如果要把指標變數傳入函式的話,在函式內對指標本身所做的任何修改都與函式外的指標無關。
在函式內對指標所指向的內容做修改可以傳出函式
所以解決辦法:
將指標傳進去,用引用接受。
將指標的位址傳進去,用二級指標接受.
1.引用接受,**如下:
#include
struct nodetree[
101]
;int loc;
node*
creat()
bool
build
(node*
&t,char c)
return
true;}
intmain()
return0;
}
結果:
2.二級指標接受,**如下:
#include
struct nodetree[
101]
;int loc;
node*
creat()
bool
build
(node*
* t,
char c)
return
true;}
intmain()
return0;
}
結果如下:
C語言複雜指標理解
學習和使用c語言近十年了但對c語言的複雜指標依然有些迷糊索性花點時間分析一下,下面是一些心得,希望對讀者有所幫助 取the c programming language中的兩個例子以分析 char x char x 3 5 若直接讓我們說出這兩個x分別是什麼意思往往會有一些困難,這裡我們可以使用代入...
C語言指標的理解
什麼是指標?指標也是一種變數,存放的是某塊記憶體的位址。我們知道,記憶體可以理解為是按位元組被分割成若干塊的,每一位元組都對應著乙個編號,並且這些編號從小到大依次排列,這個編號就是它的位址,獨一無二,而指標變數中的值就是這些編號 例如如下 的結果 include include int main 這...
C語言指標的理解
include intmain int p1 2 p2 2 p3,p4,p5 宣告2個陣列指標,和3個普通指標 p1 arr 記住p1是陣列指標,是指向陣列的 printf d n p1 0 輸出陣列裡的第乙個元素 p1 指標自增,自增按陣列單位自增,這裡看成一維陣列的話,乙個陣列單位就是3,相當於...