5.1简单语句

; //空语句,语法上需要一个语句但逻辑上不需要

复合语句(块):用花括号括起来的语句

5.4.3范围for语句

vectorv={0,1,2,3,4,5};
for(auto &r:v) //对于v中的每一个元素

6.1.2函数声明(函数原型)

函数只能定义一次,可声明很多次
函数的三要素(返回类型、函数名、形参类型)
函数在头文件中声明,源文件中定义
若需要修改实参,则形参设置为引用类型

6.2.3const形参和实参

顶层const作用于对象本身

6.2.4数组形参

数组特殊性质:1.不允许拷贝数组 2.使用数组时会将其转换成指针

//下面三个函数等价,每个函数都有一个const int *的形参
void print(const int *);
void print(const int[]);
void print(const int[10]);
int i=0,j[2]={0,1};
print(&i);   //&i的类型是int*
print(j);   //j转化成int*并指向j[0]
int (&arr)[10];  //arr是具有10个整数的整型数组的引用
void print(int (*martix)[10],int r){};   //martix声明成指向含有10个整数的数组的指针
int *martix[10];  //10个指针构成的数组
void print (int martix[][10] ); // 形参是指向含有10个整数的数组的指针
void f(int &a[10]);//引用的数组
void f(int (&a)[10]);//数组的引用
void f(int *a[10]);//10个指针构成的数组
void f(int (*a)[10]);//一个指针,指向十个整数元素

6.2.5main:处理命令行选项

int main (int argc,char *argv[]) //argv是一个数组,他的元素是指向c风格字符串的指针;
//argc表示数组中字符串的数量
当实参传给main函数后,argv的第一个元素指向程序的名字或者一个空字符串,接下来的元素依次传递命令行提供的实参

6.2.6含有可变形参的函数

如果函数的实参数量未知但是全部实参的类型相同可以用initializer_list形参
initializer_list对象中的元素永远是常量值,不可改变initializer_list对象中元素的值

6.2.7省略符形参

两种形式:
void foo(parm,…);
void foo(…); //省略符形参所对应的实参无需类型检查

递归:函数调用它本身

6.3.3返回数组指针

typedef int arrT[10];  //arrT是一个类型别名,他表示的类型是含有10个整数的数组
using arrT==int[10];  //arrT的等价声明
arrT*func(int i);   //func返回一个指向含有10个整数的数组的指针

使用尾置返回类型
//func接受一个int的实参,返回一个指针,该指针指向一个含有十个整数的数组
auto func(int i)->int(*)[10];

6.4函数重载

同一作用域内几个函数的名字相同但形参列表不同,调用时编译器会根据传递的实参类型推断想要的是哪个函数
不允许两个函数除了返回类型外其他所有要素都相同
函数的重载必须有形参数量或者形参类型上的不同

重载和const形参
Record lookup(phone);
Record lookup(const phone);//二者等价

6.5特殊用途语言特性

6.5.1默认实参

typedef string::size_type sz;
string screen(sz ht=24,sz wid=80,char backgrnd=’ ');
string window;
window=screen(); //等价于screen(24,80,’ ‘)
window=screen(66); //等价于screen(66,80,’ ‘)
window=screen(66,234); //等价于screen(66,234,’ ‘)

6.5.2内联函数和constexpr

inline const string& shorterstring(const string &s1,const string &s2){}; //内联函数,可避免函数调用的开销
constexpr函数:能用于常量表达式的函数,函数返回类型和形参类型都是字面值类型,函数体有且只有一条return语句

6.6函数匹配

6.7函数指针

函数指针指向的是函数而非对象。
bool (*pf)(const string &,const string &); //pf是一个指向函数的指针,该函数的参数是两个const string引用,返回值是bool类型
pf=lengthconpare; // pf指向一个名为lengthconpare的函数
pf=& lengthconpare; //等价于上一行
bool b1=pf(“hello”,“good”); //调用lengthconpare函数
bool b2=(*pf)(“hello”,“good”); //等价于上一行
bool b3=lengthconpare(“hello”,“good”); //等价于上一行

bool * pf(const string &,const string &);//pf是一个函数,返回bool*

C++ primer(5th)第五-六章相关推荐

  1. 大连理工大学c语言第三次上机作业答案,大连理工大学软件学院C语言上机第五六章课后题...

    大连理工大学软件学院C语言上机第五六章课后题 五.1. #includeint main() { int a,b,c; float X,Y,Z; scanf("%d%d%d",&a ...

  2. c语言作业题五六章答案,C语言程序设计五六章习题和课堂测试答案.doc

    C语言程序设计五六章习题和课堂测试答案 C语言程序设计第四五六章习题和课堂测试答案,还有期末C语言复习例题//3--1矩形面积 #includevoid main(){float a,b;float ...

  3. c语言作业题五六章答案,数据结构(C语言版)第五六章习题答案

    数据结构(C语言版)第五六章习题答案,人民邮电出版社,答案很详细. (15)设F是一个森林,B是由F变换得的二叉树.若F中有n个非终端结点,则B中右指针域为空的结点有( )个. A. n-1 B.n ...

  4. 文本处理强调的是使用计算机,计算机一级信息技术第五六章复习题课件.ppt

    计算机一级信息技术第五六章复习题课件.ppt 复习题3 选择题 1.黑白图像的像素有________个亮度分量. A.1 B.2 C.3 D.4 2.文字处理软件输出汉字时,首先根据汉字的机内码在字库 ...

  5. 《c primer pius》第六章第14题,发现网上好多都有问题,编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中

    编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中: 假定该行不超过255个字符.回忆一下,您可以使用具有%c说明符的scanf()从输入中一次 读入一个字符,而且当您按 ...

  6. C++ Primer Plus 自学第六章结尾编程9题

    第一题 要求:输入字符串到@字符为止,回显除数字以外输入,将大小写字母相互转换. //6.1 #include<iostream> #include<cctype> int m ...

  7. c++ primer 5th 笔记:第二章

    第二章:变量和基本类型 笔记: 1. c++语言规定一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大.其中,数据类型long l ...

  8. 《C Primer Plus》第六章---C控制语句:循环(while for do while 嵌套循环 真值 逗号运算符 复习题编程题)

    文章目录 C控制语句:循环 本章内容 再探while循环 程序注释 C风格读取循环 while语句 终止while循环 何时终止循环 while:入口条件循环 语法要点 用关系运算符和表达式比较大小 ...

  9. C++ Primer Plus第十六章练习

    不得不说16章的STL初学者噩梦 看到算法那直接省略跳过了 16.10.1 #include <iostream> #include <string> using namesp ...

最新文章

  1. js url传值中文乱码完美解决(JAVA)
  2. BAT架构师技术文档:Redis+Nginx+Dubbo精选+面试题+架构师精选视频(免费领)
  3. 网站优化之关键词的挖掘准则有哪些?
  4. php中对MYSQL操作之事务控制,回滚
  5. Redisson 管道批量发送命令流程分析
  6. Struts2封装获取表单数据方式
  7. 机器学习实战-集成学习-23
  8. SAP Cloud for Customer的Opportunity搜索前台实现原理
  9. visio的字体复制到word_学会这6个常用Word技巧,文档做起来又快又好看,办公如有神助...
  10. hadoop 单机伪分布式安装步骤
  11. Nginx源码分析 - 主流程篇 - 全局变量cycle初始化(11)
  12. 当机器学习遇上隐私保护,聊聊联邦学习和分布式机器学习
  13. 永远的java_永远的冒险岛-经典版
  14. flash builder 找不到所需要的AdobeFlashPlayer调试器版本
  15. 小白学习笔记之Python要点
  16. Linux驱动开发之RGB565转RGB888
  17. 项目管理工具之apizza
  18. 校园跳蚤市场平台/校园二手交易平台管理系统
  19. 如何查看html源码和其它网页信息
  20. 哈理工OJ 1630 网线 【建图+Prime算法】

热门文章

  1. 深度学习相关阅读论文汇总(持续更新)
  2. 小程序AI初体验 | 做一款实时识别车辆报价的小程序
  3. 我的单曲《给我一个不爱的理由EP》发行了
  4. android开发项目app实例!我在华为做Android外包的真实经历!深度好文
  5. van Emde Boas 树 数据结构说解
  6. Redhat Linux 2.6.18-308.el5修改系统时间
  7. chrome auto switch配置
  8. 基于html的音乐播放设计,基于HTML5技术的音乐播放器的设计与实现
  9. python psi指标
  10. 数学最高奖菲尔兹奖得主 Laurent Lafforgue 官宣加入华为!