C++学习笔记
命名空间
标准C++库中的包含的所有内容(常量、变量、结构、类和对象等)都被定义在了命名空间==std==下面。
变量存储类型
C++中程序使用的内存区域
C++程序内存分为四个区域
- 程序代码区 code area
存放程序中各个函数的代码
- 全局数据区 data area
存放全局数据和静态数据,由编译器建立,自动初始化为0,该区域的数据一直保持到程序结束。
- 栈区
存放函数的局部数据,函数被调用的时候就分配数据,函数调用结束之后,系统会自动回收函数在栈区分配的单元。
- 堆区
存放函数的动态数据,用new、malloc动态分配的变量保存在堆区,分配区域的首地址保存在指针变量中,用完之后,要用delete或者free进行释放。
局部变量的存储方式
声明一个变量的语法全称:
<存储类型> <数据类型> <变量名>;
存储类型有四种:
- auto:自动类
默认类型,在函数开始时分配空间,在调用结束时释放空间。
- register:寄存器类
尽可能的放到CPU寄存器中,提高运行速度。仅支持局部变量和形参。寄存区变量没有地址,无法饮用。
- 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;
申请动态数组 - 指针的核心
动态数组是指针的核心应用
根据用户输入的信息决定分配空间的大小。用new和delete实现。
- 通常,是将申请到的空间的首地址赋值给一个指针变量:
int *p = new nums[3];
delete []p;
标准模板库STL
是惠普实验室的几个人开发出来的一系列C++程序库。
组成
-
容器 Containers
-
算法 Algorithm
-
迭代器 Iterators
所有STL容器都附有自己的迭代器。
-
仿函数
-
配接器
-
配置器