// 下面時交換兩個數的函式
void
swap
(int
*a,int
*b)
當傳入的a和b的位址不是同乙個位址的情況下,函式正常工作
int a =1;
int b =2;
swap
(&a,
&b);
// 得到a=2,b=1
當傳入的a和b的位址是同乙個位址的情況下,函式不正常工作
int a =1;
swap
(&a,
&a);
// 得到a=0
為什麼會這樣呢?我們來分析一下
// a=b=0xff,0xff->1
void
swap
(int
*a,int
*b)
我們來看看其他情況
int a =1;
int b =1;
swap
(&a,
&b);
// 得到a=1,b=1
為什麼會這樣呢?我們來分析一下
// a=0xff,0xff->1,b=0xfe,0xfe->1
void
swap
(int
*a,int
*b)
c c 兩個指標變數位址的相減
如下例程 include stdio.h include string.h using namespace std define uint8 t unsigned char define uint16 t unsigned short int define uint32 t unsigned int...
通過函式給指標賦值(二)交換兩個變數的值
1 由乙個函式講起,實現功能 交換兩個變數的值。可能很多人想到的是這樣乙個函式 void swap int a,int b 2 但是,上述函式的呼叫結果是錯誤的 原始碼 csdn swap.cpp 定義控制台應用程式的入口點。include stdafx.h void swap int a,int ...
交換兩個變數的swap函式問題
常常看到這樣的一種寫法 void swap int a,int b 這是一種常用的很巧妙的交換的方法,但是如果用在陣列元素的交換,而a和b又指的是同乙個元素,就會出現問題了。例如 int a 10 swap a 2 a 2 這樣就會把a 2 變為零。今天是在自己練習寫乙個快速排序的程式的時候發現這個...