文章目录
一、C++简介
1、起源
二十世纪八十年代初贝尔实验室。
2、应用范围
文字处理程序、编译器、操作系统、大型游戏等。
3、从C到C++
- C是结构化和模块化的语言,面向过程,未完全实现解决软件设计危机的目标。
- C++保留了C原有的所有优点,对C的功能进行了扩充,增加了面向对象的机制。
注:C++对C的扩充
①变量的定义可以出现在程序中的任何行;
②提供了标准输入输出流对象cin,cout;
③用const定义常变量;
④函数重载、函数模板、带默认值的函数;
⑤应用类型;
⑥单目作用域运算符;
⑦string类型字符串;
⑧使用new和delete代替malloc和free函数等。
4、C++开发工具
- 记事本(Notepad++)+命令行、
- Visual C++ 6.0、
- VS(Visual Studio)2015(功能强大,体积庞大)、
- CodeBlocks(开源免费,专业推荐)、
- 其他(DEV C++、CLion、C-Free、Xcode、C4droid)。
5、C++代码规范
二、C++基础语法
1、常用数据类型
2、变量
(1)变量的概念
变量就是一块内存空间;
——通过变量可以简单快速的找到内存中存储的数据。
(2)变量的命名
变量名只能由字母、数字、下划线三种字符组成;
第一个字符必须为字母或下划线。
(3)变量的声明和使用
- 数据类型 变量名;(声明变量)
- 数据类型 变量名=值;(定义时初始化变量)
- 数据类型 变量名;变量名=值;(定义后初始化变量)
3、运算符
(1)运算符的种类
- 算数运算符
- 转义运算符
- 关系运算符:>、<、>=、<=、==、!=(C++中引入布尔类型,true表示真,false表示假。)
- 位运算符:&、|、~、^(异或)、<<(左移)、>>
- sizeof运算符:可以获得数据类型占用内存空间的大小。s加粗样式izeof(type_name);结果以字节为单位。
…
(2)运算优先级
- 括号优先级最高;
- 单目运算符优先级别高,赋值运算符优先级别最低;
- 从右向左结合性的只有赋值运算符、三目运算符和单目运算符;
- 算数运算符>关系运算符>逻辑运算符。
4、结构体
- 条件if/switch、
- 循环while/do-while/for、
- break(跳出循环,执行循环之后的语句)、
-
continue(跳过本次循环,继续下次循环。
…
5、数组
(1)什么是数组?
——数组是一个变量(一块内存空间),由数据类型相同的一组元素组成(一块连续的内存空间)。
(2)数组的结构和基本要素
标识符、数组元素、元素下标、元素类型。
(3)数组的替代品
6、指针(pointer)
(1)什么是指针?
——指针是一个值为内存地址的变量(或数据对象)。
强烈建议初始化所有的指针,并尽可能在定义了对象之后再定义指向它的指针。
(2)指针的基本用法
——数据类型 * 指针变量名。
注:
- int* p的写法偏向于地址,即p就是一个地址变量,表示十六位地址;
- Int *p的写法偏向于值,*p是一个整形变量,能够表示一个整型值;
- 声明中的号和使用中的号含义完全不同。
(3)特殊类型指针
- 空指针(null pointer)——不指向任何对象,在试图使用一个指针之前可以首先检查是否为空。
- void*指针——种特殊的指针类型,可以存放任意对象的地址。
(4)数组与指针
- 数组名就是这块连续内存单元的首地址——num与&num[0]的值相同;
- 数组第i+1个元素可以表示为:①地址:&num[i + 1]或num + 1;②值:num[i + 1]或*(num + i + 1)或*++num
- 为指向数组的指针赋值:int * ptr_num = num;
- 指针变量可以指向数组元素:int * ptr_num = &num[4]。
7、引用(reference)
(1)引用的概念
- 引用即别名,并非对象,引用只能绑定在对象上;
- 引用更接近const(常量)指针,一旦与某个变量关联起来,就将一直效忠于他;
- 将引用变量用作参数时,函数将使用原始数据,而非副本;
- 当数据所占内存较大时,建议使用引用参数。
- 返回引用:不要返回局部变量的引用;函数可以不返回,默认返回传入的应用对象本身。
(2)指针与引用
- 引用对指针进行了简单封装,底层仍然时指针;
- 获取引用地址时,编译器会进行内部转换。
(3)使用引用参数的一些指导原则
8、动态分配内存
- 使用new动态分配内存;
- 使用delete释放内存。
例:动态分配的数组
Int * intArray = new int[10];(new运算符返回第一个元素的地址)
Delete [] intArray;