zoukankan      html  css  js  c++  java
  • c++语言的学习笔记代码与笔记注释《函数部分》

    具体的笔记以注释的形式写在代码内,每个知识点用函数的形式表现。

      1 #include <iostream>;
      2 #include<cmath>
      3 
      4 const double PI=3.1415926;
      5 int func(int& a,int& b){
      6     int c = a+b;
      7     int t =a;
      8     a=b;
      9     b=t;
     10 //值引用,与语义引用
     11 //交换a,b的值,从内存中改变。
     12     return c;
     13 }
     14 
     15 int func1(){ //&取地址;
     16     int P;
     17     P=10;
     18     std::cout<<""<<&P<<std::endl;
     19     return 0;
     20 
     21 //inline 关键字表明这个函数在编译的时候推荐编译为内联函数,
     22 //即,将函数体嵌入在调用的位置。
     23 }
     24 inline double func2(double l){
     25     return PI*l*l;
     26     //函数体足够简单时可以减少函数调用和返回的开销。
     27 }
     28 
     29 
     30 
     31 //关于constexpr函数的使用。
     32 //必须注意的是return的返回值必须是常量值。
     33 
     34 constexpr int func3(){
     35     return 20;
     36 
     37 }
     38 //默认参数值的函数,的使用。
     39 int func4(int a,int b =10,int c =12){
     40     if (b!=10) {
     41         std::cout << "b的值为:" << b<<"
    ";
     42         std::cout << "不是函数默认的值";
     43     }else if(c!=12){
     44         std::cout<<"c的值为:
    ";
     45         std::cout<<"c不是函数默认值!
    ";
     46     }else{
     47         std::cout<<"b,c为默认值
    ";
     48 
     49     }
     50 }
     51 
     52 //函数的重载的使用方法
     53 //注意:参数名不能区分重载函数,返回值不能区分重载函数,不要把不同功能的函数声明为重载函数,以避免混淆误解
     54 //第一种情况是参数类型不同,第二中情况是参数的个数不同
     55 //第一种(第二种类似)
     56 
     57 int sumOfsquare(int a,int b){
     58     return a+b;
     59 }
     60 double sumOfsquare(double a,double b){
     61     return a+b;
     62 }
     63 
     64 //可变长度的形参表,可变参数。
     65 //1、使用initialer_list的标准库类型
     66 //initialer_list的参数的类型必须是相同的。
     67 //2如果实参的类型是不同的,需要 编写可变参数的模板。
     68 
     69 
     70 //initialer_list其对象永远是常量值,不能改变。
     71 //可以有其他类型的参数。
     72 //initialer_list的主要方法:
     73 //initialer_list<T> lst;  默认初始化;T类型的空列表
     74 //initialer_list<T> lst{a,b,c...};
     75 //lst.size()列表中的元素数量
     76 //lst.begin 返回指向lst首元素的指针
     77 //lst.end() 返回lst尾元素下一位置的指针
     78 
     79 int main(){
     80     //int func(int& a, int& b);
     81     int a ,b;
     82     a=10;
     83     b =12;
     84     std::cout<<"赋值前a:"<<a<<",赋值前b:"<<b<<std::endl;
     85     int ls =func(a,b);
     86     std::cout<<"id of a:"<<&ls<<std::endl;
     87     std::cout<<"a="<<a<<","<<"b="<<b<<std::endl;
     88    // int func1();
     89     func1();
     90     double pi=func2(2.00000000);
     91     std::cout<<pi<<"
    ";
     92     std::cout<<"关于constexpr函数的用法:"<<func3()<<"
    "<<std::endl;
     93     func4(4,12);
     94     int sum = sumOfsquare(2,4);
     95     double sum1 =sumOfsquare(2.111,2.0101);
     96     printf("
    %d %.10f",sum,sum1);
     97     std::cout<<"
    int sum:"<<sum<<"
    double sum:"<<sum1<<"
    ";
     98     std::cout<<sin(30);
     99     // cmath里的函数值是需要输入弧度的。”系统函数“的使用。
    100     return 0;
    101 }

    运行结果

     1 /home/leo/CLionProjects/yinyong/cmake-build-debug/yinyong
     2 赋值前a:10,赋值前b:12
     3 id of a:0x7ffeab257ac0
     4 a=12,b=10
     5 0x7ffeab257a84
     6 12.5664
     7 关于constexpr函数的用法:20
     8 
     9 b的值为:12
    10 不是函数默认的值
    11 6 4.1211000000
    12 int sum:6
    13 double sum:4.1211
    14 -0.988032
    15 Process finished with exit code 0
  • 相关阅读:
    初学者之 Git 和 Github
    80端口与8080端口是两种不同的端口吗?他们到底有什么区别和联系?
    redis 基础(一) 初步了解redis
    spring 基础(四)浏览器跨域访问+拦截器(Interceptor)
    mysql商业版和社区版
    spring 基础(五) spring mvc RESTful
    解决idea控制台打印乱码问题
    springBoot 基础-拓展(二) 记录一些常用的配置文件
    SpringBoot 基础(零) SpringBoot和Spring
    springBoot 基础-拓展(一) spring-boot-starter
  • 原文地址:https://www.cnblogs.com/BlogOfMr-Leo/p/8640946.html
Copyright © 2011-2022 走看看