函数的默认参数

来源:互联网 发布:淘宝钻展怎么弄啊 编辑:程序博客网 时间:2024/05/17 01:09

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

例如,如果将函数 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); // validint 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个字符:

这里写图片描述

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

原创粉丝点击