指標作為函式的引數

2021-10-02 04:15:10 字數 1038 閱讀 3259

各位小夥伴學習了指標之後是不是跟我一樣,一臉矇逼這玩意在講啥,我也是經過了很長時間的思考才勉強懂了指標的意思。

指標其實就是一種變數,只是它與普通變數不太一樣,普通變數存放的是乙個實實在在的值,而它存放的卻是乙個值的位址。

計算機要對資料進行處理是需要知道這個資料它在**的,也就是這個資料的位址。而我們平時寫**,例如:設定乙個變數a=2,其實當我們寫了這個a之後,計算機就申請了乙個空間給a了,然後才可以給a賦值,也就是將這個值放在這個空間裡。

而當我們寫了乙個指標之後,計算機也是會申請乙個空間的,而這個空間它不是用來存放具體的資料的,而是這個資料的位址,通過這個位址我們就可以找到相應的資料了。

問題來了,你是不是這樣很多此一舉,將空間放值不就行了嗎?為什麼還要來放位址,然後再通過位址來找到對應的值。但是這樣可以方便我們呼叫資料,特別是將指標作為函式引數的時候。下面我們就通過乙個例子來感受一下吧。

#include

void

swap1

(int x,

int y)

,swap2

(int

*px,

int*py)

,swap3

(int

*px,

int*py)

;int

main()

void

swap1

(int x,

int y)

//將普通的變數作為形參

void

swap2

(int

*px,

int*py)

//將指標作為形參

void

swap3

(int

*px,

int*py)

//將指標作為形參

執行結果如下:

經過變換之後:a=

1,b=

2經過變換之後:a=

2,b=

1經過變換之後:a=

1,b=

2

指標作為函式引數

當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...

指標作為函式引數

臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...

指標作為函式的引數

一 呼叫getptr後ptr仍然為null程式出錯 include include void getptr char p,int num int main 二 修改程式 include void getptr char p,int num int main 解釋 首先要說明的是char ptr,開始...