zoukankan      html  css  js  c++  java
  • [C++] 默认参数

    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:
    ";
        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++] = '';
    
        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; }
  • 相关阅读:
    函数基础
    全局变量与类似配置文件的模块文件
    global语句(python学习手册422页)
    作用域实例
    变量名解析:LEGB原则
    作用域
    第三方库安装方法
    s[-1]和s[len(s)-1]
    查找特定后缀的文件
    logging日志管理-将日志写入文件
  • 原文地址:https://www.cnblogs.com/ingy0923/p/8668434.html
Copyright © 2011-2022 走看看