char &func(const char *str, int len = 1);
有默认值得参数就是默认参数,该函数被调用而不传递默认参数的对应实参,则编译器认定其值为默认值,特别重要的一点是其中一个参数有默认值,则其右边的所有参数都必须有!
char &func(const char *str, int len = 1, int rlen); //这是错误的
默认参数应用实例
#include <iostream>
using namespace std;
const int size = 80;
char *left(const char *str, int n = 1);
int main()
{
char sample[size];
cout << "enter string:\n";
cin.get(sample,size);
char *ptr = left(sample, 4);
cout << ptr << endl;
delete [] ptr;
ptr = left(sample);
cout << ptr << endl;
delete [] ptr;
return 0;
}
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];
while(i <= n)
p[i++] = '\0';
return p;
}
left函数的另一种边界安全的实现
char *left(const char *str, int n)
{
if(n < 0) n = 0;
n = (n < strlen(str))? n : strlen(str);
char *p = new char[n+1];
int i;
for(i=0; i < n; i++)
p[i] = str[i];
return p;
}
原文链接: https://www.cnblogs.com/ingy0923/p/8668434.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/271415
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!