先來看
交換兩個變數的值,容易聯想到『』兩量交換借助中間變數『』的方法。
若用函式呼叫的方式來實現交換,沿用上述思路初步實現如下:
#include
//include
#include
//using namespace std;
void
swap
(int m,
int n)
intmain()
結果如下
有沒有感到疑惑呢?
涉及到了函式傳遞中至關重要的問題—實參和形參之間的關係。
是因為函式的括號裡的為形參 而形參只是實參的乙份拷貝,所以說在函式裡無論你怎麼動形參,實參的值都不會因此而改變什麼,所以也就無法達到交換兩個變數值得效果。
/*第一種c語言最簡單不呼叫函式的*/
#include
#include
intmain()
printf
("%d %d\n"
, a, b)
;return0;
}
結果如下
第二種
改進方法:利用指標
# include
void
swap
(int
*m,int
*n)int
main()
結果如下:
現在怎麼就實現了呢?
用兩個指標變數則能直接獲取到兩個變數的位址 如果將兩個變數的位址交換了,可想而知兩個變數的值也就交換了。
第三種
再來看c++實現相同功能:利用指標實現傳參
/*第一種c++利用指標*/
# include
using
namespace std;
void
swap
(int
*m,int
*n)int
main()
第四種c++基於c語言擴充套件:利用引用實現傳參
/*第二種c++利用引用*/
# include
using
namespace std;
void
swap
(int
&m,int
&n)int
main()
附上結果:
棧的c語言和c 實現
棧 stack 是一種,先入後出的資料結構,它只有乙個出口。棧允許新增元素,移除元素取得最頂端元素,但是除了最頂端之外,沒有方法可以訪問棧的其他元素,棧的遍歷是不存在的 從頭到尾出棧 c語言實現 棧有兩種儲存結構順序儲存結構和鏈式儲存結構 在這裡我們考考慮順序儲存結構,考慮棧線性表構成 表尾端我們稱...
c語言和c 的「 」的語言
在c語言中,有三種作用,分別如下 1.取位址。單目運算子。用來取乙個變數的位址。比如int i,p p i 這裡的 作用是取變數i的位址。int a 1 int p a 取位址給位址變數,所以這個是取位址 引用 int a 1 int p a 取乙個變數的別名,我們可以通過這個變數賦值給標有 符號的...
c語言和c 中struct的區別
1.雖然長的一樣,但是本質上型別不同 c語言中 struct是使用者自定義資料型別 udt c 中struct是抽象資料型別 adt 所以下面 struct he 在c裡面實際上資料型別為 struct he 所以定義乙個結構he變數都要 帶上struct.structhe a c語言 變數方式 而...