练习6.1
实参和形参的区别是什么?
形参出现在函数定义中,只能在函数体内使用
练习6.2
(a)返回类型不匹配。应该把int换成string
(b)没有返回类型。应该加上一个返回类型(如void)
(c)任意两个形参不能同名。把第二个v1换成v2
(d)函数体必须加上{ }
练习6.3 && 练习6.4
#include<iostream>
using namespace std;
int fact(int a) {
int ret = 1;
while (a > 1)
ret *= a--;
return ret;
}
int main() {
int val;
cin >> val;
cout << val<<"的阶乘是:\t"<<fact(val) << endl;
return 0;
}
练习 6.5
#include<iostream>
using namespace std;
int abs(int a) {
return a > 0 ? a : (-a);
}
int main() {
int val;
cin >> val;
cout << val<<"的绝对值是:\t"<<abs(val) << endl;
return 0;
}
练习 6.6
形参 ,局部变量以及局部静态变量之间的关系
局部变量包括 形参和静态局部变量。
形参属于自动对象,在函数开始时初始化,在函数终止时被销毁。
局部静态变量,在程序第一次使用时初始化,直到程序终止时才被销毁。
练习 6.7
#include<iostream>
using namespace std;
int fun() {
static int flag = -1;
flag++;
return flag;
}
int main() {
for (int i = 0; i < 10; i++)
cout <<"第"<<i+1<<"次调用的返回值是:\t"<< fun() << endl;
return 0;
}
分离式编译没有仔细看,用上了再看吧。。。。
练习 6.10
#include<iostream>
using namespace std;
void change_zhi_zhen(int *a,int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void change_yin_yong(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main() {
int val1 = 2, val2 = 3;
cout << val1 << " " << val2 << endl;
change_zhi_zhen(&val1, &val2);//用指针形参交换
cout <<"指针形参交换"<< val1 <<" "<< val2 << endl;
change_yin_yong(val1, val2);//用引用类型交换
cout << "用引用类型交换" << val1 << " " << val2 << endl;
}
练习 6.12
当然是引用更容易,因为引用还可以返回额外的信息(这个理由有点牵强)
练习 6.13
前者以传值的方式传入参数,不能修改实参;
后者以引用的方式传入参数,可以修改实参;
练习 6.17
#include<iostream>
#include<cctype>
#include<string>
using namespace std;
bool find_big(const string &s) {
for (auto c : s)
if (isupper(c))
return true;
return false;
}
string change_to_small(string &s) {
/*这种做法不对,改变的只是c的值,与s无关,c只是一个临时变量
for (auto c : s)
{
c = tolower(c);
cout << c << endl;
}
*/
for (decltype(s.size()) i = 0; i < s.size(); i++)
s[i] = tolower(s[i]);
return s;
}
int main() {
cout << find_big("Bhdkalks") << endl;
string s = "Bhdkalks";
cout << change_to_small(s)<< endl;
return 0;
}