C++学习笔记


命名空间

标准C++库中的包含的所有内容(常量、变量、结构、类和对象等)都被定义在了命名空间==std==下面。


变量存储类型

C++中程序使用的内存区域

C++程序内存分为四个区域

  1. 程序代码区 code area

存放程序中各个函数的代码

  1. 全局数据区 data area

存放全局数据和静态数据,由编译器建立,自动初始化为0,该区域的数据一直保持到程序结束。

  1. 栈区

存放函数的局部数据,函数被调用的时候就分配数据,函数调用结束之后,系统会自动回收函数在栈区分配的单元。

  1. 堆区

存放函数的动态数据,用newmalloc动态分配的变量保存在堆区,分配区域的首地址保存在指针变量中,用完之后,要用delete或者free进行释放。

局部变量的存储方式

声明一个变量的语法全称:

<存储类型> <数据类型> <变量名>;

存储类型有四种:

  1. auto:自动类

默认类型,在函数开始时分配空间,在调用结束时释放空间。

  1. register:寄存器类

尽可能的放到CPU寄存器中,提高运行速度。仅支持局部变量和形参。寄存区变量没有地址,无法饮用。

  1. static:静态类

拥有全局生命周期,在源程序结束后才会释放。未指定初值的,系统自动初始化为0。

  • 静态局部变量

    局部的作用域,但是拥有全局的生命周期。

  • 静态全局变量

    只能在本文件中使用,不支持外部变量。

  • extern:外部类

举例:在1.cpp中定义了全局变量 int CON=100;在2.cpp中想要用这变量,就要声明:EXTERN CON;


按址操作-指针

地址与指针

地址

通常,变量、数组、函数和对象在内存中分配连续的存储单元,第一个内存单元的地址,称为变量的地址

  • 地址的位数与CPU总线的条数相同。
  • 取地址运算符&

指针

  • 地址就是指针。

  • 用一个变量保存地址,就是==指针变量==。

  • 指针变量的值就是地址。

  • 指向运算符 * ,又叫间接访问运算符。当指针变量指向某个变量,*p = i (p = &i),*p是间接访问,i是直接访问。

指向数组和字符串的指针

  • 由于数组名就是地址(即指针),把指针变量指向数组或者字符串的名字,就相当于给指针赋值了。
int nums[10], *p;
p = nums;

char str1 = "abcd"; *pstr;
pstr = str1;

申请动态数组 - 指针的核心

动态数组是指针的核心应用

根据用户输入的信息决定分配空间的大小。用newdelete实现。

  • 通常,是将申请到的空间的首地址赋值给一个指针变量:
int *p = new nums[3];
delete []p;

标准模板库STL

是惠普实验室的几个人开发出来的一系列C++程序库。

组成

  1. 容器 Containers

  2. 算法 Algorithm

  3. 迭代器 Iterators

所有STL容器都附有自己的迭代器。

  1. 仿函数

  2. 配接器

  3. 配置器


模板