利用指標,實現函式值的交換

2021-10-25 18:39:50 字數 638 閱讀 8164

定義乙個swap函式中,通過傳遞指標實現主函式兩個數的數值交換

**如下:

#include

void

swap

(int

*p,int

*q)void

main()

注:

要想通過指標實現位址傳遞,解引用,不能只是簡單交換兩個指標變數內的位址,必須通過訪問符*,訪問到指標所指向的位址,進而進行一系列操作。

錯誤示範1:

void

swap

(int

*p1,

int*p2)

只進行了指標變數中內容的交換,並未交換指標所指向變數中的內容

錯誤示範2:

void

swap

(int

*p1,

int*p2)

這裡的指標變數temp由於未初始化,就變成了乙個野指標

野指標即 1)位址不存在 2)你沒有許可權訪問

在執行到*temp=*p1; 由於temp位址不存在或使用者無許可權訪問造成整個程式崩潰

所以在指標的應用中,一定記得先初始化指標

利用下標獲取指標的數值

1 當定義乙個指標資料之後 int p 通過 p 獲取指標指向的資料。2 當指標指向乙個陣列的時候,int p int a 3 p a 因為陣列名就是指向陣列第乙個數值的位址。如下 int main p a printf a 1 is d n a 1 printf p 1 is d n p 1 pr...

通過位運算實現數值交換

對於數值的交換操作,通常會採用第三個變數作為中間變數過渡的交換方式。temp a a b b temp 使用這種方法,可以保證交換的準確性,但是由於會使用第三個變數,占用了額外的記憶體空間。那麼有沒有辦法不借助第三個變數實現兩個數值的交換呢?可以通過數值相加寄存和位運算兩種方式。1 相加寄存 可以將...

用函式實現兩個數的交換(指標)

define crt secure no warnings include include void swap int pa,int pb int main 不知道大家是否注意到,在定義函式時,並非將a,b的值賦給了形參,而是將a,b的位址付賦給了整形的指標變數 pa和 pb,這是因為在將實參傳給形...