P1-c++函数详解-01函数的默认参数


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 <iostream>
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$ ./demo
n=1, m=2, j=3
n=2, m=5, j=3
n=7, m=8, j=9
book@book-desktop:~/meng-yue/c++/function/01$

4. 书里面带的官方例子

#include <iostream>
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$ ./demo
Enter a string:
meng-yue-foundation
meng
m

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

代码资料的路径

在这里插入图片描述

1 微信公众号,梦悦foundation

在这里插入图片描述

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

3 后台回复 c++资料

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

在这里插入图片描述

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

1 pdf文件

2 html格式文件

3 蚂蚁笔记

4 印象笔记

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值