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; }
  • 相关阅读:
    shell去重
    JDBC源码解析
    try catch finally
    URL
    域名与IP地址的联系与区别
    C++stack
    C++vector
    单链表常见面试题(C语言实现)
    数据库limit子句
    strcpy和memcpy的区别
  • 原文地址:https://www.cnblogs.com/ingy0923/p/8668434.html
Copyright © 2011-2022 走看看