C++复习笔记1 -- 变量和基本类型

本文详细介绍了C++中的变量声明与定义,包括局部变量、全局变量的作用域。此外,还讲解了引用和指针的区别,以及复合类型如数组、结构体的概念。同时,讨论了const限定符的用法和auto类型推断,以及decltype类型指示符的作用。最后,提到了自定义数据结构,如结构体的应用。
摘要由CSDN通过智能技术生成

C++复习笔记 – 变量和基本类型


变量和基本类型
  1. 变量声明和定义

    第一,声明的作用是告诉编译器关于变量名称/变量类型/变量大小/汉书名称/结构名称/大小等信息,而且在声明阶段不会给变量分配内存。定义性声明:如int a;分配内存,引用性声明:如extern int a;不分配内存。

    定义:在变量声明后,给它分配内存。一般声明和定义放在一起。

    第二,声明可以有多次,而定义只能有一次。

  2. 变量作用域

    一般来说,有3个地方可以定义变量:第一,函数或代码块内部声明变量,局部变量;第二,在函数参数定义中声明的变量,形式参数;第三,在函数外声明的变量,全局变量。

    局部变量:只能被函数内部或者代码块内的语句使用,作用于就是这个函数;

    全局变量:在函数外定义的,在程序的整个声明周期内都有效。

  3. 引用和指针

    引用:变量的别称。

    不存在空引用,用用必须连接到一块合法的内存。

    一旦引用被初始化为一个对象,就不能被指向到另一个对象,指针可以在任何时候指向另一个对象。

    引用必须在创建时被初始化,指针可以在任何时间被初始化。

    指针:保存变量地址的变量。

  4. 复合类型

    数组

    字符串

    结构体

    共用体

    union idcard {
    	string id1;
    	int id2;
    }
    //节省空间,常用于操作系统数据结构和硬件数据结构
    

    枚举

    指针

    引用

  5. const限定符

    指针:const int * p或者int const * p是常量指针(指向常量的指针),对象的值不可变,指针可以更换指向的对象。

    int * const p是指针常量,指针内所存的地址不可变,指向的对象的值可以改变。

  6. auto类型说明符

    自动类型推断(尤其是模板类型出现,表达式的返回类型变得复杂)。(decltype)

    第一,变量声明时根据初始表达式自动推断该变量的类型;(迭代器/模板函数)

    第二,在声明函数时作为函数返回值的占位符。(常常与decltype配合使用)

    template<class T, class U>
    auto add(T t, U u) -> decltype(t + u) {
        return t + u;
    }
    

    note:使用auto关键字的变量必须初始化

    ​ 函数参数和模板参数不能被声明为auto

    ​ 使用auto关键字声明表达式时,不能自动推导顶层引用和const,除非显式声明

    int i = 10;
    int & r = i;
    auto a = r;
    a = 13;
    //i=10, a=13
    //显式声明
    auto & b = r;
    b = 15;
    // i=15, b=15
    
    const int c1 = 10;
    auto c2 = c1;
    c1 = 11; //error
    c2 = 14; //ok,type of c2 : int
    //显式声明
    const auto c3 = c1;
    c3 = 15;//error,type of c3 : const int
    
  7. decltype类型指示符

    从表达式的类型推断出要定义的变量类型,但是不用该表达式的值初始化变量(auto完成这项工作),decltype返回操作数的数据类型,编译器分析表达式并得到它的类型,不计算表达式的值。

  8. 自定义数据结构

    struct <类名> {<类体>};

    struct Book_info {
        string book_id;
        float price;
    };
    Book_info book1, book2;
    //通常将类定义和对象的定义分开
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值