基础

作者: 龙遁流 | 来源:发表于2016-12-25 18:10 被阅读0次

    1

    标准输入输出对象:

    cin :istream对象,从标准输入读取数据

    cout:ostream对象,将数据写入到标准输出,一般用于正常内容的输出。默认情况下,读取cin或程序非正常终止时会刷新cout

    cerr:ostream对象,关联到标准错误,输出程序的错误信息,默认情况下写到cerr的数据是不缓冲的。

    clog:ostream对象,关联到标准错误,默认情况下写到clog的数据是被缓冲的。

    定义在函数内部的内置类型默认是不初始化的,除非有显式的初始化语句,未初始化的变量的值无意义。

    2 变量和基本类型

    基本内置类型:算数类型和空类型

    算数类型:整型(包括字符类型,布尔类型),浮点型

    C++ 算数类型

    有符号和无符号

    1,当赋给无符号类型一个超出其表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。unsigned char c = -1;//c=255,即255%256=255

    2,赋给带符号类型一个超出表示范围的值时,结果是未定义的

    3,含有无符号类型的表达式中,有符号类型的值会自动转换为无符号类型

    字面值常量

    20 十进制;024 八进制;0x24 0X24 十六进制

    默认情况下,十进制字面值是带符号数,八进制或十六进制不确定;

    3.14 ;3.1415E0; 0.;0e0;.001

    默认情况下,浮点型字面值是double

    'a' 字符字面值

    "hello" 字符串字面值

    转义序列

    转义序列

    指定字面值的类型

    指定字面值类型

    初始化不是赋值,初始化是创建变量的同时赋予其一个初始值,而赋值的是把对象的当前值擦除,以一个新值代替。

    int a  = 0;

    int a = {0};

    int a{0};

    int a(0);

    用{}初始化为列表初始化,对于内置类型来说,使用列表初始化若初始值存在丢失信息的风险,编译器会报错。

    默认初始化:定义时没有指定初值。如果是内置类型,全局或static变量都被初始化为0,但在函数体内部的局部变量值未定义,不可使用。对于类,由类本身决定其值。

    声明规定了变量的类型和名字,定义则还会分配空间(初始化);任何包含了显式初始化的声明即成为定义;

    extern double pi = 3.1415;//定义

    double pi = 3.1415;//定义

    extern double pi;//声明

    复合类型:基于其他类型定义的类型,如指针和引用;

    引用定义时必须被初始化,是对象的别名,无法重新绑定到另一个对象上。

    指向指针的引用

    int *p;

    int  *&r = p;//r是对指针p的引用

    const int &r1 = i;//对常量的引用,不可通过r1改变i的值

    const int *p;//指向常量的指针

    int *const p;//指针常量

    const int *const p;

    顶层const:表示指针(或任何对象)本身是常量

    底层const:表示指针(或引用)指向的对象是一个常量

    常量表达式:

    值不会改变(const)并且编译过程中就可以得到计算结果的表达式。

    将变量声明为constexpr类型,使编译器来验证变量的值是否是一个常量表达式。此变量是常量并且必须用常量表达式来初始化。

    constexpr int a = 12;

    constexpr int a = func();//当func()是constexpr函数时,成立

    constexpr指针的初始值必须是nullptr或0,或存储于固定地址中的对象。constexpr引用的初始值必须是固定地址中的对象。

    constexpr int *p = nullptr;//constexpr修饰p

    类型别名:某类型的同义词,简化类型的表示

    typedef double othername;

    using othername = double;

    typedef  double *p;//p的类型是double*

    例如:

    typedef char *pstring;

    const pstring cstr = 0;//cstr 是指向char的常量指针

    const pstring *p;//p指向一个指向char的常量指针,不可简单的把pstring展开代入来理解,const修饰pstring,而pstring首先是一个指针

    auto 类型说明符

    1,auto定义变量必须有初始值,编译器根据初始值推断类型

    2,同一条语句声明多个变量,这些变量的初始值的类型必须一样

    3,使用引用初始化auto定义的变量,实际上是用引用的对象初始化,则推断为引用的对象的类型

    4,auto一般会忽略顶层const,保留底层const。const auto f = ci;//显式顶层const

    decltype类型指示符

    使用表达式的类型推断类型。

    1,decltype(f()) sum;//使用函数的返回值类型

    2,decltype(x) sum;//使用变量的类型,注意不可忽略const和引用类型

    3,如果表达式的内容是解引用操作,则decltype得到引用类型

    decltype((x)) d=y;//d是x的引用类型

    decltype(x) d;//只有当x本身是引用类型,d才是引用类型

    命名空间的声明

    using namespace::name;

    using namespace space_name;

    头文件不应该包含using声明,避免包含此文件的源文件和using声明的名字冲突

    标准库string类型

    可变长字符序列 

    #include <string>

    using std::string;

    string初始化 string操作

    从流中读取时会忽略空白字符(空格符,换行符,制表符等)

    getline从流中读取一行,遇到换行符为止(换行符也读进来了),但换行符不会存到对象中。

    string::size_type,类中定义的类型,无符号,可存下任何string对象的大小,可使用auto或decltype推断。

    字面值和string对象相加,必须确保运算符两侧至少一个是string对象。字符串字面值不是string类型。

    []返回的是某位置上字符的引用。

    #include<cctype>

    处理string的字符方法

    基于范围的for循环

    for (declaration : expression){

    statement

    }

    标准库类型vector

    #include <vector>

    using std::vector;

    vector初始化

    vector<T>::size_type

    相关文章

      网友评论

          本文标题:基础

          本文链接:https://www.haomeiwen.com/subject/cbqdvttx.html