第六章 6.2.4節練習

練習6.21

編寫一個函數,令其接受兩個參數:一個是int型的數,另一個是int指針。函數比較int的值和指針所指的值,返回較大的那個。在該函數中指針的類型應該是什麼?

解答:

<pre name="code" class="cpp">#include <iostream>

using namespace std;

int compare(const int& num, int* &p){
	return (num > *p ? num : *p);
}

int main(){
	int a = 10, b = 100;
	int *p = &b;
	cout << compare(a, p) << endl;
}


練習6.22

編寫一個函數,令其交換兩個int指針。

解答:

#include <iostream>

using namespace std;

void swapP(int* &p1, int* &p2){
	int *tmp = p1;
	p1 = p2;
	p2 = tmp;
}

int main(){
	int a = 10, b = 100;
	int *p1 = &a, *p2 = &b;
	swapP(p1, p2);
	cout << *p1 << endl;
	cout << *p2 << endl;
}

練習6.23

參考本節介紹的幾個print函數,根據理解編寫你自己的版本。一次調用每個函數使其輸入下面定義的i和j:

int i = 0, j [2] = {0, 1};

解答:

參考書中的參數列表,進行傳參吧。略過吧。


練習6.24

描述下面這個函數的行爲。如果代碼中存在問題,請指出並改正。

void print(const int ia[10]){

  for(size_t i = 0; i != 10; ++i){

    cout << ia[i] << endl;

  }

}

解答:

這個函數應該是沒什麼問題的。但傳遞的參數必須是 int [10]類型的。

傳遞一個有10個元素的數組,並將每個元素依次打印。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章