变量、指针、类型初识

  • C++算术符类型和所占用的最小长度
    c++基本类型占用最小长度
  • 头文件不应包含using声明,因为头文件的内容会被拷贝到所有引用它的文件中去,如果头文件里有某个using声明,每个使用此头文件的文件都会有这个声明
  • string类,需要引入#include <string>
    1. getline函数,此函数的作用就是从流中读取一行数据(不包括换行符)到string
    getline(basic_istream<_Elem, _Traits>& _Istr,
    basic_string<_Elem, _Traits, _Alloc>& _Str)
    
    1. size()函数返回的类型是string::size_type。肯定是一个无符号整数,因此混用有符号和无符号数会导致一定的问题
    2. ==!=用来判断string对象的相等性
    3. =用来给string对象赋值
    4. +字符串相加,可以和字符串和字符字面值相加,但是要保证每个+的两侧至少有一个string对象
    5. (c++11)使用增强for循环遍历的时候,如果使用引用&来遍历string对象,那么可以改变string对象的上的字符
    6. 下标运算符可以取字符串的字符
  • cctype
    cctype头文件
  • 标准容器类型vector
    1. 包含
    #include <vector>
    using std::vector;
    
    1. 如果元素是基本类型,则默认初始值被设置为0
    2. 如果是类型,则由类默认初始化
    3. size函数返回的结果是vector<type>::size_type而非vector::size_type
    4. 只有当元素的值可以比较的时候,vector对象才能被比较
    5. 下标获取指定元素,下标只能是无符号类型。而数组不一样。比如:
    int *p=&ia[2];
    int j=p[1];
    int k=p[-2];
    
    1. 不能通过下标添加元素,只能通过push_back
    2. 迭代器通过begin或者end函数来获取,迭代器通过解引用能得到确定的元素。尾后迭代器解引用是未定义行为。同一个对象的尾后迭代器相等。迭代器可以使用自增等运算符
    3. 常量迭代器
    vector<int> v;
    const vector<int> cv;
    // vector<int>::iterator
    auto it1=v.begin();
    // vector<int>::const_iterator,它自身的值可以改(可以指向其他元素),但不能改写其指向的元素值。
    auto it2=cv.begin();
    
    1. c_str函数,返回c风格字符串。返回的类型是const char *
    2. basic_string(_Iter _First, _Iter _Last, const _Alloc& _Al = _Alloc())构造函数
    char a[10] = "121";
    string b(begin(a), end(a));
    
  • const修饰的成员函数
    1. const修饰的成员函数(指const放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有const修饰的成员函数,对数据成员则是可读可写的。
    2. 除此之外,在类的成员函数后面加const还有什么好处呢?那就是常量(即const)对象可以调用const成员函数,而不能调用非const修饰的函数。
    3. const修饰的成员函数和非const修饰的成员函数可以互相重载
  • 箭头运算符->表示(*ptr).method
  • 指针,引用和数组
    // a是int数组
    int a[4];
    // a是int*的数组
    int *a[4];
    // a是指向int数组的指针
    int (*a)[4];
    // a是指向int数组的引用
    int (&a)[4];
    
    // 数组名是不可修改的左值,报错
    a=1;
    
  • 指针相减运算的结果是ptrdiff_t的标准库类型。差值可能为负值所以此种类型为带符号类型。和size_t在同样的头文件
  • cstring头文件并不是string类的头文件,而是处理c风格字符串char*的头文件
    char str[20] = { 'a','b' };
    strcat_s(str, " ");
    
  • 多维数组
    1. 多维数组缺省数组大小只能在第一个维度缺省推断,其余维度不可
    2. 增强for循环可以遍历
    // 编译报错,因为第一层循环是循环的数组,而auto对数组推断结果是指针,第二层循环指针就不合法了
    for (auto x:array)
        for (auto y:x)
    
  • 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
    这允许一种极端情况,其中字节有64位大小,所有类型(包括char)都有64位宽,而sizeof对每个类型均返回1
  • aggregate type聚合类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值