视频讲座:黑马程序员C++教程 https://www.bilibili.com/video/av41559729或https://www.bilibili.com/video/av44183309
第1阶段-C++基础入门,
第2阶段实战-通讯录管理系统,
第3阶段-C++核心编程,
第4阶段实战-基于多态的企业职工系统
第5阶段-C++提高编程
第6阶段实战-基于STL泛化编程的演讲比赛
第7阶段-C++实战项目机房预约管理系统
c++基础
初识C++
第一个C++程序
#include <iostream>
using namespace std;
int main() //C/C++主函数入口,每个程序必须有且仅有1个main()入口主函数
{
cout << "Hello, World!你好!世界!" << endl;//屏幕输出你好世界等文本信息
system("pause");//int system( const char* command )以参数command调用宿主环境的命令处理器
//(例如 /bin/sh 、 cmd.exe 、 command.com )
//本例是windows环境,因此调用windows的命令行命令"pause"
return 0;
}
注释
1.单行注释: //开头的一句为单行注释
2.多行注释: /*多行注释*/
变量
定义:可以随时更改数据的量为变量.
语法: 数据类型 变量名[=初始值];
int a = 100;
cout << "a=" << a << endl;
常量
定义:不可以更改的量为常量
- 宏定义常量: #define 常量名 常量值
- const常量: const 数据类型 常量名=常量值
#include <iostream>
//注意宏定义#define语句结尾不要以;号结尾(除非你确实需要;号)
#define PI 3.14
using namespace std;
int main()
{
const int MONTH = 12;
cout << "圆周率π=" << PI << endl;
cout << "1年的月份数=" << MONTH << endl;
/*
//以下为故意出错的语句,会导致程序不能运行,因此将其注释掉
PI = 666;//错误!不能为宏定义常量赋值
MONTH = 888;//错误!常量不能改变
*/
system("pause");
return 0;
}
二者的区别:
- 宏定义常量:以"#define PI 3.14"为例.系统编译时会先把代码中所有的PI用3.14来替换掉再进行编译.因此编译后实质上系统并不认识PI,它也并不存在.(因此3.14后不能以;号结尾,否则系统会拿"3.14;"而不是"3.14"来替换掉所有的PI,这样会造成语法错误)
- const常量:const常量定义的常量本质上一个特殊的变量,即以const修饰赋初值后不可改变的变量为常量.
关键字
关键字是C++中的保留词,一般为C++本身的语句/指令
注意:在定义标识符的时候,不可以使用关键字
c++关键字如下:
asm | do | if | return | typedef |
auto | double | inline | short | typeid |
bool | dynamic_cast | int | signed | typename |
break | else | long | sizeof | union |
case | enum | mutable | static | unsigned |
catch | explicit | namespace | static_cast | using |
char | export | new | struct | virtual |
class | extern | operator | switch | void |
const | false | private | template | volatile |
const_cast | float | protected | this | wchar_t |
continue | for | public | throw | while |
default | friend | register | true | |
delete | goto | reinterpret_cast | try |
标识符命名规则
- 标识符不能是关键字(例如: int不能为标识符)
- 标识符由字母,数字,下划线构成(例如: aaa123, bbb_666, _abc)
- 标识符由字母或下划线开头(例如:666abc,123不能为标识符)
- 标识符区分大小写(例如:abc和Abc是不同的标识符)
- 扩展:现代编程语言基本支持Unicode字符(含中文)标识符.(例如:标识符可以为 甲乙丙, 天地玄黄123,但不能为123天地玄黄)
建议:英文标识符命名以有意义的英文单词为主(不能起无意义的a,b,c等),一般不能使用拼音(因为拼音同音太多)
数据类型
整型
sizeof关键字
sizeof可以统计数据类型所占内存大小
语法: sizeof(数据类型/变量)
实型(浮点型)
实型分为单精度float和双精度double
默认情况下,浮点数最多显示6位有效数字:
float fPI = 3.1415926f;
double dPI = 3.1415926;
cout << "圆周率π(单精度)=" << fPI << endl;
cout << "圆周率π(双精度)=" << dPI << endl;
cout << "float占用字节数:" << sizeof(float) << endl;
cout << "double占用字节数:" << sizeof(double) << endl;
float f1 = 5e-3; //科学计数法
float f2 = 5e3; //科学计数法
cout << f1 << endl;
cout << f2 << endl;
字符型
字符型变量只能有1个字符
语法: char 变量名='1个字符'; 例如: char ch='a';
- C/C++字符型变量只占用1个字节
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的ascii编码放入到存储单元
cout << "char占用字节数:" << sizeof(char) << endl;
char ch = 'a';
cout << "ch=" << ch << endl;
cout << "ch的ascii码=" << (int)ch << endl;
//char ch2 = ''; //错误!程序中止:char字符不能为空
//char ch3 = "a"; //错误!程序中止:char字符不能用双引号
//char ch4 ='abc'; //错误!程序中止:char只能有1个字符
char cch = '李';//错误!汉字'李'超出字符范围(ascii码范围0~127)!但程序并不知道,仍旧正常执行!
//此时cch中没有存储汉字'李'而是未预料到的字符!
cout << "cch=" << cch << endl;//输出未预料到的字符!
ASCII码表格:参考
转义字符
转义字符 | 意义 | ASCII码值(十进制) |
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符''\' | 092 |
\' | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |
\? | 代表一个问号 | 063 |
\0 | 空字符(NUL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 十六进制所代表的任意字符 | 十六进制 |
字符串
字符串是一串字符,由两个西文双引号包起来.(注意:不可以用中文双引号)
- C风格字符串 语法: char 变量名[]=字符串;
- C++风格字符串 语法: string 变量名=字符串;
#include <iostream>
#include <string>
using namespace std;
int main()
{
char str1[] = "你好啊世界!"; //c风格字符串
cout << str1 << endl;
string str2 = "Hello, world!"; //c++风格字符串,需要包含头文件 #include <string>
cout << str2 << endl;
system("pause");
return 0;
}
布尔类型
布尔bool类型只有两个值:true真(1),false假(0).
布尔类型占1个字节
bool flag;
flag = true;
cout << flag << endl;//输出为1
flag = false;
cout << flag << endl;//输出为0
==>>[牢记]在C/C++和大多数编程语言中,非0为真.<<==
数据的输入
语法: cin >> 变量; //将屏幕(控制台)输入的数据存储到变量中
int a;
cout << "请输入整型数a=" << endl;
cin >> a;
cout << "a=" << a << endl; //输出a
string strx;
cout << "请输入字符串strx=" << endl;
cin >> strx;
cout << "strx=" << strx << endl; //输出字符串strx
bool b;
cout << "请输入布尔型b=" << endl;
cin >> b; //注意:输入任意非0值,结果都为真,即1.
cout << "布尔类型b=" << b << endl; //b为真输出1;为假输出0