练习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个元素的数组,并将每个元素依次打印。