函式的輸入變數為兩個指標時要注意兩個指標是否相等

2021-09-25 10:19:24 字數 793 閱讀 6943

// 下面時交換兩個數的函式

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 變為零。今天是在自己練習寫乙個快速排序的程式的時候發現這個...