指標作為函式引數

2021-08-09 04:33:59 字數 1102 閱讀 7951

臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。

本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。

首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式的形參,而形參的值不能傳遞給實參。但是依據傳送的內容可以將函式引數分為值型引數和指標型引數。通常來說,值型引數用來傳值,而指標型引數用來傳位址。可以看出,指標型參變數得到的是主調函式中某個變數的位址,因此可以通過間接訪問運算,操作主調函式中的變數,從而將指標型形參的指向域擴大到主調函式,達到與主調函式雙向交換資料的目的。這樣,指標形引數的作用完全可以替代全域性變數,而且可以彌補全域性變數的不足之處。

下面舉三個例子來說明,讓大家更清楚的理解指標型變數的存在意義。

void swap(int x, int y);

void main()

void swap(int x,int y)

結果如圖:

執行結果:

從這裡可以得到如下結論:

1.例1說明函式間引數只能單向傳遞。

2.例2說明當指標變數作為函式傳遞引數時,形參和實參形參和實參同時指向同一記憶體位址。

3.雖然交換了形參x和y的指向,但是指標型引數也必須遵循單向傳遞規則,x和y的值不會回傳給實參。

指標作為函式引數

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

函式指標作為函式引數

先來看看普通的指標 如果有 int a 那麼可以定義乙個 int p a 則p是乙個指向a的指標 定義指標用乙個比較粗淺的方法來說就是把原來的變數名換掉並且前面加星號,比如這裡就是把a換成p並且前面加星號,就定義了乙個可以指向a的指標 同理,如果要定義乙個指向函式的指標,那麼也只要把函式名做類似的處...

指標作為函式引數,C語言指標作為函式引數詳解

include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...