cprimerth第六章答案.pdf_第1页
cprimerth第六章答案.pdf_第2页
cprimerth第六章答案.pdf_第3页
cprimerth第六章答案.pdf_第4页
cprimerth第六章答案.pdf_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+primer 第五版第五版 第第六六章章 答案答案 6.1 答:实参是形参的初始值,实参的类型必须与对应的形参类型匹配。形参是在函数的形 参列表中进行定义的,我们实参的值去初始化形参。 (1)形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单 元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参 变量。 (2)实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调 用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等 办法使实参获得确定值。 (3)实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错 误。 (4)函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参 的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会 变化。 (5)当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在 内存中位于不同的位置, 形参将实参的内容复制一份, 在该函数运行结束的时候形参被释放, 而实参内容不会改变。而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函 数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在 函数体内部可以改变实参的值。 6.2 答: (a)返回类型错误; (b)没有定义函数的返回类型; (c)函数体缺少左花括号; (d) 函数体缺少一对花括号; 6.3 答:#include #include using namespace std; int fact(int n) int val=1; for (int ret = 2; ret 1) val *= n; n-; return val; 6.5 答:return n 0 ? n : (-1)*n; 6.6 答:形参是一种自动对象,函数开始的时候为形参申请存储空间,因为形参定义在函数 体组用域之内,所以一旦函数终止,形参也就被销毁。局部对象如果是非静态的,那么其生 存周期是从其被创建到函数体结束。 静态局部变量在程序路劲第一经过对象定义语句是初始 化, 并且直到程序终止才被销毁, 在此期间即使对象所在的函数结束执行也不会对它有影响。 例:#include #include using namespace std; int fact(int n) int i = 2; static int cnt = 0; +cnt; cout 0 ? n : (-1)*n; int main() for (int j = 0; j != 4; +j) cout #include using namespace std; int fact() static int cnt = 0; return cnt+; int main() for (int j = 0; j != 4; +j) cout #include #include“chapter6.h“ using namespace std; int fact() static int cnt = 0; return cnt+; chapter6.cpp main 文件 #include #include #include“chapter6.h“ using namespace std; int main() for (int j = 0; j != 4; +j) cout #include using namespace std; void swap(int *ip1, int *ip2) int temp; temp = *ip1; *ip1 = *ip2; *ip2 = temp; int main() int ival1 = 1, ival2 = 3; int *p1 = swap(p1, p2); cout #include using namespace std; bool my_isupper(const string for (decltype(s.size() index = 0; index != size; index+) if (sindex = A指针的类型是 int*; 6.22 答:void swapPtr(int *p1,int *p2) ; 6.23 答:#include using namespace std; void print(int matrix, int ix) cout #include int main(int argc, char *argv) if (argc 2) std:string str = argv1; str += argv2; std:cout #include int main(int argc, char *argv) for (int i=0; i using namespace std; int my_add(const int *beg,const int *end) int sum = 0; while ( beg != end ) sum += *beg+; return sum; int main() int sumVal; const int a = 1,1,1,1,1,1,1,1,1,1,1,1 ; sumVal=my_add(a, a+sizeof(a)/sizeof(*a); cout #include using namespace std; void my_print(vector ivec); int main() vector ivec; for (decltype(ivec.size() i = 0; i != 200; i+) ivec.push_back(i); my_print(ivec); return 0; static size_t i = 0; void my_print(vector ivec) if(i != ivec.size() cout string ( 6.38 答:int odd = 1, 3, 5, 7, 9 ; int even = 0, 2, 4, 6, 8 ; decltype(odd) 例:#include using namespace std; int odd = 1, 3, 5, 7, 9 ; int even = 0, 2, 4, 6, 8 ; decltype(odd) *arrPtr(int i) return (i % 2) ? int main() cout #include #include using namespace std; string make_plural(size_t ctr, const string int main() size_t cnt = 1; cout #include #include #include using namespace std; void f() cout v1; 6.55 答:#include #include using namespace std; typedef int fun(int, int); int sum(int a, int b)return a + b; int reduce(int a, int b) if (a = b) return a - b; else return b - a; int ride(int a, int b)return a*b; int divide(int a, int b)return a / b; int main() int a = 20, b = 10; vector ivec; ivec.push_back(sum)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论