1. 程式人生 > >C++ 通過指標正確的交換兩數值

C++ 通過指標正確的交換兩數值

1、對於程式設計來說,語言的種類是很多種的,VB,Java,objective-c,c語言,C++語言等等。。。每種語言都有各有千秋,就看讀者怎麼去對待了。下面坐著就簡單的介紹下C語言的部分

2、C語言被稱為是母語,是程式語言的基礎,而且在編譯環境中,執行速度是比任何一種語言都是要快的,但是,由於C語言是面向過程的,沒有豐富的類庫(不懂得小夥伴可以百度),所以開發速度是很低下的

3、對於大資料來說,scanf和printf的處理能力是比其他語言更加的優秀,執行的速率也是相當的不錯的

4、對於C語言來說,指標是它最迷人的地方,也是最讓人頭疼的地方,在使用指標的時候千萬要小心,不要去解引用那些空指標和野指標,會導致程式崩潰,嚴重的話是會損壞到系統中的檔案,因為野指標指向的空間是不確定的,當我們去試圖解引用的話,就會產生我們不想看到的結果

5、函式:你可以想象成為一個大箱子,或者是一個加工廠,進過加工後得到我們想要的結果

6、函式的傳參:三種情況:傳值,傳引用(C++中使用的,不支援C),傳地址
  
  下面看程式碼:

//交換的是指標的值,即交換了指標的指向。
void exchange1(int* x,int* y){
int* temp = NULL; 
temp = x;
x = y;
y = temp;
}
// 通過兩個地址不能正真交換兩個數


//交換指標指向變數空間的值,指標指向不變。
void exchange2(int* x,int* y){
int temp = 0;
temp = *x;
*x = *y; 
*y = temp;
}
// 這樣交換是可以實現兩個數字的交換的


  假設主函式裡定義兩個變數 int = 5; int b = 7;
   1、 那麼呼叫exchange2函式的時候,變數a和變數b的地址就會傳給exchange2函式中
   2、 在呼叫函式後,形參*x和*y內容就是變數a和b的地址 : x = &a, y = &b;
   3、 在進行交換的時候就是在修改形參的值,從而間接修改實參的值,而exchange1函式是無法改變實參的值,只是改變的是形參的值罷了

所以作者希望讀者能夠理解好指標,對於解引用和去地址都要小心!