C語言 指標理解

2021-10-03 18:32:40 字數 1601 閱讀 9032

剛剛程式設計遇到了乙個問題,**如下:

#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,相當於...