練習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個元素的數組,並將每個元素依次打印。