//拓:默认参数的应用之一就是函数重载的简写形式
/* 例如:要编写strcat函数的两个版本:
void mystrcat(char *,char *,int);
void mystrcat(char *,char *);
可以使用函数重载,但用默认参数实现更简单(只要编写一个版本就可以)*/
//使用默认参数
#include<iostream>
#include<cstring>
using namespace std;
void mystrcat(char *s1,char *s2,int len=0);
//使用默认参数统一两个版本的mystrcat
int main(){
char str1[]="This is a test";
char str2[]="0123456789";
mystrcat(str1,str2,5);
cout<<str1<<endl;
strcpy(str1,"This is a test"); //重置str1
mystrcat(str1,str2);
cout<<str1<<endl;
return 0;
}
void mystrcat(char *s1,char *s2,int len){
//不能写为void mystrcat(char *s1,char *s2,int len=0) 否为报告重定义错误
while(*s1) s1++; //等价于while(*s!='\0') s++;
//找到s1的末尾
if(len==0) len=strlen(s2);
while(*s2&&len){
*s1++=*s2++; //赋值后指针s1和s2再一起指向下一位
//将s2接到s1末尾
len--;
}
*s1='\0'; //在s1末尾加上null终止符('0')
}