博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1-c++函数详解-01函数的默认参数
阅读量:4047 次
发布时间:2019-05-25

本文共 2255 字,大约阅读时间需要 7 分钟。

文章目录

c++ primer plus 第八章 函数探幽,学习心得分享

1. 默认参数的概念

默认参数指的是当函数调用中省略了实参时自动使用的一个值。

例如 将 void wow(int n) 设置成 n有默认值为1,则函数调用 wow() 就相当于 wow(1)

2. 如何设置默认值呢?

必须通过函数原型。由于编译器通过查看原型来了解函数所使用的参数数目,因此函数原型也必须将可能的默认参数告知程序。

int show(int n =1);

2.1 对于带参数列表的函数,必须从右向左添加默认值

也就是说,要为某一个参数设置默认值。则必须为它右边的所有参数提供默认值。

int a(int n, int m =4, int j = 5); ----->这个是有效的int b(int n, int m = 5, int j);------>无效的int c(int n = 1, int m = 2, int j = 3)---->有效的

所以调用c 函数的时候允许 提供 1, 2, 3个参数

c(1)----> c(1, 2, 3);---->n = 1; 其他形参使用默认值c(2,5)--->c(2,5,3)----->n = 2, m = 5, j = 3;c(7,8, 9)----->默认参数不生效了!

2.2 实参从左到右顺序依次赋值给相应的形参,而不能跳过任何参数。

因此下面的调用是不允许的。

c(1, , 4); ---->  并不是调用c(1,2,4)

3. 举一个简单的例子

3.1 写在函数实现的时候会报错

#include 
using namespace std;int c(int n = 1, int m = 2, int j = 3);int main(){
c(1);//----> c(1, 2, 3);---->n = 1; 其他形参使用默认值 c(2,5);//--->c(2,5,3)----->n = 2, m = 5, j = 3; c(7,8, 9);//----->默认参数不生效了! return 0;}int c(int n, int m, int j){
cout << "n=" << n << ", m=" << m << ", j=" << j << endl;}

运行的结果

book@book-desktop:~/meng-yue/c++/function/01$ ./demon=1, m=2, j=3n=2, m=5, j=3n=7, m=8, j=9book@book-desktop:~/meng-yue/c++/function/01$

4. 书里面带的官方例子

#include 
const int ArSize = 80;char * left(const char * str, int n = 1);int main(){
using namespace std; char sample[ArSize]; cout << "Enter a string:\n"; cin.get(sample,ArSize); char *ps = left(sample, 4); cout << ps << endl; delete [] ps; // free old string ps = left(sample); cout << ps << endl; delete [] ps; // free new string // cin.get(); // cin.get(); return 0;}// This function returns a pointer to a new string// consisting of the first n characters in the str string.char * left(const char * str, int n){
if(n < 0) n = 0; char * p = new char[n+1]; int i; for (i = 0; i < n && str[i]; i++) p[i] = str[i]; // copy characters while (i <= n) p[i++] = '\0'; // set rest of string to '\0' return p; }

运行的结果,left(sample) 做的事情就是相当于 调用 left(sample, 1)

book@book-desktop:~/meng-yue/c++/function/01$ ./demoEnter a string:meng-yue-foundationmengm

5. 去哪获取笔记和详细的资料

代码资料的路径

在这里插入图片描述

1 微信公众号,梦悦foundation

在这里插入图片描述

2 公众号里点击IT资源,有链接

3 后台回复 c++资料

4 加up主微信,进学习交流群,大家一起带你飞!

在这里插入图片描述

6. 获取到的笔记怎么使用

1 pdf文件

2 html格式文件

3 蚂蚁笔记

4 印象笔记

在这里插入图片描述

转载地址:http://veyci.baihongyu.com/

你可能感兴趣的文章
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>
[互联网学习]如何提高网站的GooglePR值
查看>>
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>