C++知识点(六)数组、指针与字符串导学

1.数组

  • 地址连续存放
  • 初始化:
    • 列出全部初始值后,第1维下标个数可以省略
    • 不做初始化,局部变量中为垃圾数据,static变量为0
    • 只对一部分进行初始化,其余数值初始化为0

2.动态内存分配:

  • new 
  • delete 

3.动态创建数组

  new p[N]; delele[] p; 

  构造函数和析构函数会被调用N次

4.动态创建多维数组

  new p[M][N] ;p为指向行的指针

5.动态数组封装成类

  检查下标越界

6.智能指针:垃圾回收机制,

  unique_ptr:不允许多个指针共享资源,可用move()转移指针

  shared_ptr:多个指针共享资源

  weak_ptr:可复制shared_ptr,构造和释放对资源不产生影响

7.vector对象:类模板(数组) 类似动态数组系统封装成类

  作用:封装任何类型的动态数组,自动创建和删除;  数组下标越界检查

  定义:vector<类型> 对象名(长度)

  使用:对象名[下标];对象名.size();

8.对象的浅层复制和深层复制(复制构造函数)

  浅层复制的问题:当原含有指针的对象复制到新对象时,只复制指针地址,若析构原对象,会把新对象同时析构掉。此时需要深层复制

9.移动构造

  将源对象的状态转移到目标对象上,

 

  使用场景:返回含有指针成员的对象,

  定义:类名(类名&& 对象)

10.字符串常量:string类(C++)和字符数组(C风格)

  连续顺序存放,以‘’结尾

  string类常用操作:

getline(cin,str,','); 输入整行字符,第三个参数是字符串结束的标志分隔符

 

原文地址:https://www.cnblogs.com/lemon333333/p/10238883.html