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; }
  • 相关阅读:
    test
    VS dll 引用依赖
    Git配置
    编码--文字输入的前因后果
    base64相关
    异或
    UNION / UNION ALL 区别
    数据库使用规范
    chrome插件开发学习(一)
    缓存穿透 缓存雪崩 缓存并发
  • 原文地址:https://www.cnblogs.com/ingy0923/p/8668434.html
Copyright © 2011-2022 走看看