zoukankan      html  css  js  c++  java
  • 函数

    一.Main

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int main(int argc, char *argv[])
     5 {
     6     for (int i = 0; i < argc; i++)
     7     {
     8         cout << argv[i] << endl;
     9     }
    10     
    11     return 0;
    12 }

    二.内联函数

    为了解决调用小函数大量消耗栈空间的问题

     1 #include <iostream>
     2 using namespace std;
     3 
     4 inline char* dbtest(int a)
     5 {
     6     return (a % 2 == 0) ? "":"";
     7 }
     8 
     9 int main(int argc, char *argv[])
    10 {
    11     cout << dbtest(2) << endl;
    12     
    13     return 0;
    14 }

    等价于

    1 #include <iostream>
    2 using namespace std;
    3 
    4 int main(int argc, char *argv[])
    5 {
    6     cout << ((2 % 2 == 0) ? "":"") << endl;
    7     
    8     return 0;
    9 }

    inline函数体不能过大,不能包含复杂结构(while,switch),不能直接递归调用。inline要在函数声明的时候表示,声明的时候不写,定义的时候写是错误的

    内联与宏:

    宏是由预处理器替代,而内联函数是通过编译实现。inline能让编译器检查出更多的错。inline是真正的函数。

    三.重载

    函数名相同,函数的参数列表不同

    避免二义性:

    1 void x(){}
    2 void x(int i = 0){}

    四.缺省默认值

    某个写好的函数要添加新的参数,而原来该函数的语句未必需要新增的参数,那么为了避免对原来那些函数调用语句的修改可以使用缺省参数

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 
     5 void f(int x, float s = 12.6, char t = '
    ', string msg = "error"){}
     6 
     7 int main(int argc, char *argv[])
     8 {
     9     f(14, 48.3, '	', "ok");//ok
    10     f(14, 48.3, '	');//ok
    11     f(14, 48.3);//ok
    12     f(14);//ok
    13     f();//error
    14     //缺省默认值的参数要在参数列表最左边
    15     // int d(int x, int y = 10), OK
    16     // int d(int y = 10, int x), error
    17     //默认参数在声明中给出而非定义中    
    18     return 0;
    19 }

    五.static

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void f()
     5 {
     6     int a = 0;
     7     static int b = 0;
     8 
     9     a++;
    10     b++;
    11 
    12     cout << a << " " << b << endl;
    13 }
    14 
    15 int main()
    16 {
    17     for (int i = 0; i < 3; i++)
    18     {
    19         f();
    20     }
    21     /*
    22     1 1
    23     1 2
    24     1 3
    25     */
    26     return 0;
    27 }
  • 相关阅读:
    6Linux用户身份与文件权限
    5Linux流程控制语句-if、for、while、case语句、计划任务
    4Linux环境变量、Vim、Shell脚本
    3Linux常用命令
    2Linux常用命令-Liunu就该这么学
    1安装Linux
    Citrix XenApp工作原理
    Citrix XenApp登录服务器过程详解
    0初识Linux
    我的电脑-磁盘 不显示菜单栏和工具栏解决方法
  • 原文地址:https://www.cnblogs.com/wanderingzj/p/5293349.html
Copyright © 2011-2022 走看看