zoukankan      html  css  js  c++  java
  • C++基础-01

    指针

    - 指针的基本操作间接引用指针所指向的对象

    - 机器一般按字节寻址,所以能够独立分配的最小空间是1字节,也就是说指针指向的

      最小空间为1字节。特别地,对于bool变量,虽然实际需要的是1bit,但其大小是1字节。

      如果需要更小的空间,可以使用按位运算或者位域

    数组

    - char*可以用字符常量来初始化,字符常量是静态存储,存放在字符常量区,所以不可以char*

      修改char*指向的内容

    - 字符数组也可以用字符常量来初始化,但是字符数组存放的是字符常量的一个拷贝,存储在栈上,

      所以可以修改字符数组的内容

    - 数组作为函数参数时退化为指针:

    void func(int * pi)    
    {
        cout << "in func : " << sizeof(pi) << endl;
    }
    
    int main()
    {
        int vec[3] = {0};
        cout << "in main : " << sizeof(vec) << endl;
        
        func(vec);
    }           
    
    //输出
    // in main : 12
    // in func : 4

    常量

    - 不允许对常量赋值,所以定义常量时必须初始化

    - 但是,定义常量时不一定为常量分配内存,视编译器具体实现而定

    const int c1 = 1;
    const int c2 = 2;
    //编译期编译器知道c1、c2的值,可以进行常量折叠,也就是说,直接
    //用具体数值1、2代替c1、c2,所以不需要内存
    
    const int c3 = f();
    //对于常量c3,编译器并不知道它存放的数据,不能进行常量折叠,
    //所以需要内存
    
    //另外,如果对常量进行取地址操作就必须分配内存
    const int *p = &c2;            //需要为c2分配内存

    - 指针常量和常量指针(从右往左读,*号左边内容就是指针指向的类型)

    const int *p1;    //p1是一个指针,指向const int
    int *const p2;  //p2是一个const指针,指向int

    引用

    - 不可以修改引用指向的对象,定义时必须初始化

    - 对引用进行取地址返回的是引用指向的对象的地址

    - T &只能用T类型的左值来初始化

    - const T&可以不用左值,甚至不需要T类型来初始化

      不是T类型时,需要一个到T类型的隐式类型转换

      不是左值时,先创建一个临时变量,再用临时变量来初始化引用类型

    - 返回引用类型的函数可以作为左值或者右值

    int a = 1;    
    //int &i1 = 2;                       //error
    const int &i = 2;
    const myInt &mi = a;          //a不是myInt类型,但a可以隐式类型        
                                              //转换到myInt
    const myInt &mi1 = 2;       //2不是左值    
    生活不止眼前的苟且 还有诗和远方的田野
  • 相关阅读:
    使用protobuf生成代码import包找不到
    SQL 对邮箱数据的处理(分类统计)
    Hive 集合函数 collect_set() collect_list()
    菜谱分享网站微信小程序开发说明(1)-介绍与运行
    windows 下查看端口占用
    Windows下安装Maven自定义仓库配置阿里下载源,配置Ecplise、IDEA
    Windows下安装Node.js完整详细教程
    开启Centos8的SSH服务
    Openwrt与IPTV之二----udpxy
    Openwrt与IPTV之一----igmpproxy
  • 原文地址:https://www.cnblogs.com/jc-nogame/p/5907702.html
Copyright © 2011-2022 走看看