zoukankan      html  css  js  c++  java
  • C++primer学习笔记(四)——Chapter 6

    6.1  Function Basics

    一、函数的构造

    type functionName( parameters list)
          statement

    1、首先格式如上,一个函数一定要有返回值的类型type,函数名functionName,还有括号内的参数列表,以及主要的函数的内容。

    2、返回值:

    (1)就是return,首先,return的值一般要和返回值类型相同,否则就转换成返回值类型,但是如果没有转换的方法就会出错。

    (2)return的作用主要是两个,一个就是结束函数,回到调用的地方,另外一个就是然会一个值。

    (3)返回值类型可以是void,那么return就只有结束函数的作用了~

    3、参数列表

    (1)一个参数一定要跟着一个类型,不可以有例外。

    (2)参数的名字不可以相同,函数内的名字也不可以和参数列表内的相同

    4、调用

            切记调用的时候使用的参数类型要与参数列表一一对应。

    二、Local Object

    1、local variables:

             这个很好理解,就是定义的变量,如果在{}内,那它的作用域就只在这个{}的范围内。

    2、全局变量

             就是在函数外定义的,那么,这个变量就可以在它定义之后的任何一处代码中使用

    3、Local static objects

            这种变量不会随着{}的结束而结束,它存在于整个程序的生命周期,然后这种变量的定义和初始化语句只执行一次。

    6.2   Argument Passing

    一、传参数的方法

    重点就是传参数的2种方法

    void  func(int i)
    {
    
    }

    1、就是这种简单的方法。此种方法是通过复制一遍的方法来创建一个新的参数i。注意点就是

    (1)不能通过改变i来改变原有的值。

    (2)在对大的类或者参数进行拷贝的时候是很浪费时间的。

    (3)对于指针的复制,因为同样指向同一个对象,所以可以通过指针来改变他的值。

    void  func2(int &i)
    {
    }

    2、通过这样引用的方法,就会将i和传入的变量绑定在一起,可以直接改变他的值。

    PS:一般用引用的方法来替代copy,然后应该如果为了防止不小心被改变,则应该加上const就OK。

    二、Array  Parameters

           主要有2种方法引用,一种是指针,另一种是引用

    1、指针的三种用法(确定长度)

    (1)

    void print(const char *cp)
    {
         if(cp)         //就是判断是否是空指针
              ……
    }

    PS:

         const char *p; 常量指针,指向一块区域,这块区域不可写,只能读。
    char * const p; 指针常量,指向一块区域,这块区域可读可写,但是指针的值初始后就不能改,
                         类似于一般常量。

    (2)

    void print(const int*beg,const int *end)
    {
          while(beg!=end)
        {
              cout<<*beg++<<endl;
        }
    }

           这里就是使用的库函数,使用begin()获得头指针,end()来获得尾指针。

    (3)

    void print(const int ia[],size_t size)
    {
           for(size_t  i=0;i!=size;++i)
          {
               cout<<ia[i]<<endl;
          }
    }

          这里就是手动的定位长度,自己再传入一个变量这样子。

    2、引用的方法。

    void print(int (&arr)[10])
    {
           for(auto elem:arr)
                cout<<elem<<endl;
    }

          由于优先级的问题,在传入指针数组的时候,需要加上一个括号,保证是传入的是这10元素的头指针。

    3、附加多维指针的方法,就是说,当恒数组的数组,所以要保证列是已知的,然后按上面的方法确定行数。

  • 相关阅读:
    Solidity通过合约转ERC20代币
    各种开源协议区别
    shell脚本之函数
    shell脚本之循环和循环控制
    shell脚本之if判断以及case多分支选择
    shell脚本之数组
    shell脚本之变量
    nginx常用内置变量
    nignx配置文件详解
    nginx源码安装./configure常见参数详解
  • 原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/3950953.html
Copyright © 2011-2022 走看看