函数的默认参数

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

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

1.如何设置默认值?必须通过函数原型。例如,函数 left ( ) 的原型如下,此函数输入一个字符串,并返回字符串的前 n 个字符:

char* left( const char* str ,int n=1);

由于该函数返回一个新的字符串,所以其返回值类型为 char* ;希望输入一个字符串而不希望改变它,所以使用 const 限定符;同时,希望函数默认返回第一个字符,所以将默认值设置为1,即省略n这个参数时,它的值是1,否则传递的 n 值会将1覆盖;

2.对于带参数列表的函数,设置默认值时,必须从右到左添加默认值,也就是说,要为某一个参数设置默认值,必须为它右边的所有参数提供默认值。 例如:

int harpo(int i=1, int m=2, int j=3); // valid
int harpo(int i=1, int m, int j); // invalid

harpo原型允许调用该函数时提供 0个,1个,2个或3个 参数;

3.实参按照从左到右的顺序被赋给形参,而不能跳过任何参数。
例如

b=harpo(1, ,3); // invalid

4.注意:只有原型指定了默认值,函数定义部分与没有默认参数时完全相同。
下面栗子意思是,编写一个函数实现功能:打印指定字符串的前 n 个字符。

#include <iostream>
#include <cstring>
const int Max=20;
using namespace std;
char* left(const char* str ,int n=1);
int main()
{
    char str[Max];
    cout<<"输入指定字符串:\n";
    cin.getline(str,Max);
    cout<<"输出指定字符:\n";
    char* result=left(str,4);
    cout<<result<<endl;
    delete [] result;
    return 0;
}
char* left(const char* str ,int n)
{
    if (n<0)
    {
        n=0;
    }
    int m,i;

    //设置字符串长度的方法1
    int len=strlen(str);
    m=(n<len) ? n:len;
    char* pt=new char [m+1];
    //设置字符串长度的方法2
    /*
    for(m=0;m<n && str[m];m++);
    char* pt=new char [m+1];
    */
    for (i=0;i<m && str;i++)
    {
        pt[i]=str[i];
    }
    while (i<=m)
    {
        pt[i]='\0';
        i++;
    }
    return pt;
}

输入n=1为默认参数时,输出结果:

这里写图片描述

输入n=0时,输出结果空字符串:

这里写图片描述

输入n=4,4大于指定字符串的字符数目时,输出结果字符串是其本身:

这里写图片描述

输入n=2,输出结果字符串是其前2个字符:

这里写图片描述

此程序值得注意的是:设置字符串的方法:本例中提供了两种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值