目录

1.C++初识

02 C++书写helloworld

03 注释

04 变量

05 常量

06 关键字

07 标识符命名规则

2.数据类型

08 整型

09 sizeof关键字

10 实型(浮点型)

11 字符型

12 转义字符

13 字符串型

14 布尔类型bool

15 数据的输入

3.运算符

算术运算符

16 加减乘除运算 +-*/

​17 取模运算%

18 递增递减

19 赋值运算符

20 比较运算符

逻辑运算符

21 非

22 与

23 或

4.程序流程结构

选择结构

24 if语句

29 三目运算符

30 switch语句

循环结构

31 while语句

33 dowhile语句

35 for循环

37 嵌套循环

跳转语句

39 break

40 continue

41 goto

5.数组

一维数组

42 一维数组定义方式

43 一维数组数组名

46 冒泡排序

二维数组

47 二维数组定义方式

6.函数

7.指针

56 指针的定义和使用

57 指针所占内存空间

58 空指针

59 野指针

60 const修饰指针

61 指针和数组

62 指针和函数

63 指针配合数组和函数案例

8.结构体

64 结构体定义和使用

65结构体数组

66 结构体指针

67 结构体嵌套结构体

68 结构体做函参数

69 结构体中const使用场景


1.C++初识

02 C++书写helloworld

#include <iostream>
using namespace std;int main()
{cout << "hello world!" << endl;system("pause");return 0;
}

03 注释

1.单行注释 //描述信息
2.多行注释 /*描述信息*/

04 变量

作用:给一段指定的内存空间起名,方便操作这段内存

数据类型 变量名=变量初始值;

05 常量

记录程序中不可更改的数据

  1. 宏常量:#define 常量名 常量值
  2. const修饰的变量:const 数据类型 常量名=常量值
#define DAY 7int main()
{//DAY = 14;//err,DAY不能修改cout << "一周总共有:" << DAY << "天" << endl;const int month = 12;//month = 24;//err,const修饰的变量也成为常量cout << "一年总共有:" << month << "个月份" << endl;system("pause");return 0;}

06 关键字

预先保留的单词(标识符)

不要用关键字给变量或者常量起名称

07 标识符命名规则

  • 标识符不可以是关键字
  • 标识符字母、数字、下划线组成
  • 标识符第一个字符只能是字母、下划线
  • 标识符区分大小写

//建议:给变量起名时,最好能够做到见名知意

    //1.标识符不可以是关键字int int = 10;//err//3.标识符第一个字符只能是字母、下划线int 123acd = 10;//err//4.标识符区分大小写int AAA = 10;cout << aaa << endl;//err:未定义标识符aaa

2.数据类型

创建一个变量或常量时,必须要指定相应的数据类型,否则无法给变量分配内存

数据类型存在意义:给变量分配合适的内存空间 

08 整型

09 sizeof关键字

可以统计数据类型所占内存的大小

10 实型(浮点型)

  • float单精度,4字节,7位有效数字
  • double双精度,8字节,15-16位有效数字

(小数点前整数部分也算有效数字)

(float类型数字的后面加一个f)

 
//默认情况下,输出一个小数,会显示出6位有效数字

// 统计float,double所占用内存空间

 科学计数法

11 字符型

字符型变量用于显示单个字符,只占用1个字节,将对应的ASCII编码放入到存储单元
单引号' '括起来,单引号内只能有一个字符

 //创建方式char ch = 'a';cout << ch << endl;//所占内存大小cout << "char字符型变量所占内存:" << sizeof(char) << endl;//1//对应的ASCII码cout << (int)ch << endl;//97

//a-97 A-65

12 转义字符

用于表示一些不能显示出来的ASCII字符

 //      1./n换行cout << "hello world\n";//        2./t水平制表;跳到下一个TAB位置,宽度一共占8个位置;整齐地输出后面的数据cout << "aaa\tbbb" << endl;cout << "aaaaaa\tbbb" << endl;cout << "aaaa\tbbb" << endl;//      3.//一个反斜杠"/"cout << "\\" << endl;

13 字符串型

字符串型:用于表示一串字符

//1.C风格:char 字符串名[]="";(注意事项:要加中括号[],要用双引号“ ”引起来)
char str1[] = "hello world";
cout << str1 << endl;
//2.C++风格字符串:string 变量名="";
//得引用头文件#include<string>
string str2 = "hello world";
cout << str2 << endl;

14 布尔类型bool

//布尔类型bool,占一个字节大小
//true——真(本质1)
//false——假(本质0)bool flag = true;cout << flag << endl;flag = false;cout << flag << endl;cout << "bool所占内存空间大小为" << sizeof(flag) << endl;

15 数据的输入

用于从键盘获取数据
cin>>变量;

    //整型int a = 0;cout << "请给整型变量a赋值:" << endl;cin >> a;cout << "整型变量a=" << a << endl;//浮点型float f = 0;cout << "请给浮点型变量f赋值:" << endl;cin >> f;cout << "浮点型变量f=" << f << endl;//字符型char ch = 'a';cout << "请给字符变量ch赋值:" << endl;cin >> ch;cout << "字符型变量ch=" << ch << endl;//字符串型string str = "hello";cout << "请给z字符串str赋值:" << endl;cin >> str;cout << "字符串变量str=" << str<< endl;//布尔型//布尔类型的非0都为1bool flag = 1;cout << "请给布尔变量flag赋值:" << endl;cin >> flag;cout << "布尔变量flag=" << flag << endl;

3.运算符

算术运算符

16 加减乘除运算 +-*/

17 取模运算%

  1. 小数不可以做取模运算 

  2. 除数不能为0,所以也做不了取模运算
 int a3 = 10;int a4 = 0;cout << a3 % a4 << endl;
//err,有未经处理的异常: 0xC0000094: Integer division by zero。

18 递增递减

前置递增:先让变量+1,然后进行表达式运算

后置递增:先进行表达式运算,后让变量+1

 int a1 = 10;int b1 = ++a1 * 20;cout << "a1=" << a1 << endl;//11cout << "b1=" << b1 << endl;//220int a2 = 10;int b2 = a2++ * 20;cout << "a2=" << a2 << endl;//11cout << "b2=" << b2 << endl;//200int a3 = 10;int b3 = --a3 * 20;cout << "a3=" << a3 << endl;//9cout << "b3=" << b3 << endl;//180int a4 = 10;int b4 = a4-- * 20;cout << "a4=" << a4 << endl;//9cout << "b4=" << b4 << endl;//200

19 赋值运算符

20 比较运算符

用于表达式的比较,并返回一个真值或假值

逻辑运算符

用于根据表达式的返回真值或假值

21 非

22 与

23 或

 在C++中,除了0都为真

4.程序流程结构

选择结构

24 if语句

 int score = 0;cout << "请输入一个分数:" << endl;cin >> score;cout << "您输入的分数为:" <<score<< endl;if (score > 600){cout << "恭喜您考上一本大学" << endl;if (score > 700){cout << "恭喜您考上北京大学" << endl;}else if (score > 650){cout << "恭喜您考上清华大学" << endl;}else{cout << "恭喜您考上人民大学" << endl;}}else if (score > 500){cout << "恭喜您考上二本大学" << endl;}else if (score > 400){cout << "恭喜您考上了三本大学" << endl;}else{cout << "未考上大学" << endl;

29 三目运算符

在C++中三目运算符返回的是变量可以继续赋值 

 int a = 10;int b = 5;int c = 0;c = (a > b ? a : b);(a > b ? a : b) = 100;cout << "c=" << c << endl;//10cout << "a=" << a << endl;//100cout << "b=" << b << endl;//5

30 switch语句

case里如果没有break,程序会一直向下执行 

if和switch区别:

switch缺点:判断时候只能是整型或字符型不可以是一个区间

switch优点:结构清晰,执行效率高

循环结构

31 while语句

在写循环语句时候,必须提供跳出循环的出口

//猜数游戏的实现

//time系统时间头文件包含
#include<ctime>   int main()
{//添加随机种子,利用当前系统时间生成随机数,防止每次随机数都一样srand((unsigned int)time(NULL));//1.生成随机数//2.玩家进行猜测//3.判断玩家的猜测int num = rand() % 100 + 1;//rand()%100生成0-99随机数//cout << num << endl;int val = 0;while (1){cin >> val;if (val > num){cout << "猜测过大" << endl;}else if (val < num){cout << "猜测过小" << endl;}else{cout << "恭喜您猜对了" << endl;break;//猜对了退出循环}}system("pause");return 0;
}

//生成1-100随机数

//time系统时间头文件包含
#include<ctime>   //添加随机种子,利用当前系统时间生成随机数,防止每次随机数都一样srand((unsigned int)time(NULL));int num = rand() % 100 + 1;//rand()%100生成0-99随机数

33 dowhile语句

//输出所有三位数中的水仙花数

 int num = 100;do {int a = num % 10;//个位int b = num / 10 % 10;//十位int c = num / 100;//百位if ((a * a * a + b * b * b + c * c * c) == num){cout << num << endl;}num++;} while (num < 1000);

35 for循环

//1-100逢7过的实现(逢N过)

#define N 7  //逢N过
int main()
{for (int i = 1; i <= 100; i++){if ((i %10 == N) || (i / 10 == N) || (i % N == 0))cout << "PASS\t";elsecout << i << "\t";if (i % 5 == 0){cout << endl;}}system("pause");return 0;
}

37 嵌套循环

在循环中再嵌套一层循环

外层执行一次,内层执行一周

跳转语句

39 break

跳出选择结构循环结构

1.出现在switch条件语句中,作用是终止case并跳出switch

 cout << "请选择副本难度" << endl;cout << "1.普通" << endl;cout << "2.中等" << endl;cout << "3.困难" << endl;int select = 0;cin >> select;switch (select){case 1:cout << "您选择的是普通难度" << endl;break;case 2:cout << "您选择的是中等难度" << endl;break;case 3:cout << "您选择的是困难难度" << endl;break;default:break;}

2.出现在循环语句中,作用是跳出当前的循环语句

for (int i = 0; i < 10; i++){if (i == 5){break;//退出循环}cout << i << endl;}
// 0 1 2 3 4

3.出现在嵌套语句中,跳出最近的内层循环语句(不影响外层循环)

for (int i = 0; i < 5; i++){for (int j = 0; j < 5; j++){if (j == 3){break;}cout << "*";}cout << endl;}
***
***
***
***
***

40 continue

在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

for (int i = 0; i < 100; i++)
{if (i % 2 == 0){continue;//可以筛选条件,执行到此就不再向下执行,执行下一次循环//break;会退出循环。写break的结果一个数也不打印}cout << i << endl;
}
//写continue的结果只打印0-99中的奇数 不打印偶数

41 goto

可以无条件跳转语句

5.数组

一个集合,里面存放了相同类型的数据元素

特点1:数组中每个元素都是相同的数据类型

特点2:数组是连续的内存位置组成的

一维数组

42 一维数组定义方式

定义数组的时候,必须有初始的长度

数组中的下标,从0开始索引

43 一维数组数组名

  1. 可以统计整个数组在内存中的长度  sizeof(数组名)
  2. 可以获取数组在内存中的首地址  cout<<arr<<endl;

 数组名是常量,不可以进行赋值操作

//数据元素逆置

1 记录起始下标位置 2 记录结束下标位置3 起始下标与结束下标元素互换

4 起始位置++,结束位置-- 5 循环执行直到起始位置>=结束位置

 int arr[5] = { 1,2,3,4,5 };cout << "数组逆置前:" << endl;for (int i = 0; i < 5; i++){cout << arr[i] << endl;}int start = 0;int end = sizeof(arr) / sizeof(arr[0]) - 1;while (start < end){int temp = arr[start];arr[start] = arr[end];arr[end] = temp;end--;start++;}cout << "数组逆置后:" << endl;for (int i = 0; i < 5; i++){cout << arr[i] << endl;}

46 冒泡排序

//冒泡排序:实现升序序列

 int arr[9] = { 4,2,8,0,5,7,1,3,9 };cout << "排序前:" << endl;for (int i = 0; i < 9; i++){cout << arr[i] << " ";}cout << endl;//排序总轮数=元素个数-1;//每轮对比次数=元素个数-排序轮数-1;for (int i = 0; i < 9 - 1; i++){for (int j = 0; j < 9 - i - 1; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}cout << "排序后:" << endl;for (int i = 0; i < 9; i++){cout << arr[i] << " ";}cout << endl;

二维数组

47 二维数组定义方式

行数可以省略,列数不可以省略

48 二维数组数组名

  • 查看二维数组所占内存空间
  • 可以查看二维数组的首地址
 int arr[2][3] ={{1,2,3},{4,5,6}};cout << "二维数组占用的内存空间为:" << sizeof(arr) << endl;cout << "二维数组第一行占用内存为:" << sizeof(arr[0]) << endl;cout << "二维数组第一个元素占用内存为" << sizeof(arr[0][0]) << endl;cout << "行数:" << sizeof(arr) / sizeof(arr[0]) << endl;cout << "列数:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;cout << "二维数组首地址" << int(arr) << endl;cout << "二维数组第一行首地址" << int(arr[0]) << endl;cout << "二维数组第二行首地址" << int(arr[1]) << endl;cout << "第一个元素首地址" << (int)&arr[0][0] << endl;cout << "第二个元素首地址" << (int)&arr[0][1] << endl;

6.函数

将一段经常使用的代码封装起来,减少重复代码

7.指针

56 指针的定义和使用

可以通过指针,间接访问内存

  • 内存编号是从0开始记录的,一般用十六进制数字表示
  • 可以利用指针变量保存地址

指针定义:数据类型 * 指针变量名;

使用指针:通过解引用的方式来找到指针指向的内存

指针前加 * 代表解引用,找到指针指向的内存中的数据

57 指针所占内存空间

//32位操作系统下,指针占4字节空间;64位操作系统下,指针占8字节

58 空指针

指针变量指向内存中编号为0的空间

作用:初始化指针变量

空指针指向的内存是不可以访问的

int* p = NULL;
//*p = 100;//引发了异常: 写入访问权限冲突。p 是 nullptr。

(0~255之间的内存标号是系统占用的,因此不可以访问)

59 野指针

指针变量指向非法的内存空间

(空指针和野指针都不是我们申请的空间,不要访问)

60 const修饰指针

const修饰指针——常量指针  const int* p = &a;
指针的指向可以修改,但是指针指向的值不可以改
  
const修饰常量——指针常量  int* const p = &a;
指针的指向不可以修改,指针指向的值可以改

const即修饰指针,又修饰常量——const int* const p=&a;
指针的指向和指针指向的值都不可以改

61 指针和数组

//利用指针访问数组中的元素

int* p = arr;//arr是整形数组名,就是数组首地址
p++;//让指针向后偏移4个字节,访问数组中下一个元素

62 指针和函数

利用指针作函数参数,可以修改实参的值

63 指针配合数组和函数案例

//冒泡排序(通过指针实现)

void bubbleSort(int * arr,int len)
{for (int i = 0; i < len - 1; i++){for (int j = 0; j < len - i - 1; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}
void printArr(int* arr, int len)
{for (int i = 0; i < len; i++){cout << *arr << " ";arr++;}cout << endl;
}int main()
{//创建数组int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };int len = sizeof(arr) / sizeof(arr[0]);//创建函数实现bubbleSort(arr, len);//打印排序后数组printArr(arr, len);system("pause");return 0;
}

8.结构体

结构体属于用户自定义的数据类型,允许用户存储不同的数据类型

自定义数据类型,一些类型集合组成的一个类型

64 结构体定义和使用

//创建变量

Student s1;
s1.name = "张三";struct Student s2 = { "李四",19,80 };struct Student
{//成员列表string name;int age;int score;
}s3;
s3.name = "张三";

定义结构体的时候struct关键字不可以省略

创建变量时struct关键字可以省略

结构体变量利用操作符 . 来访问成员

65结构体数组

66 结构体指针

struct Student s2 = { "李四",19,80 };
Student* p = &s2;
p->age;

67 结构体嵌套结构体

68 结构体做函参数

69 结构体中const使用场景

将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来

加入const之后,一旦有修改的操作就会报错,可以防止我们的误操作

笔记 黑马程序员C++教程从0到1入门编程——基础语法入门相关推荐

  1. 笔记 黑马程序员C++教程从0到1入门编程——提高编程02

    目录 3 STL-常用容器 string容器 189 构造函数 190 赋值操作 191 字符串拼接 192 字符串查找和替换 193 字符串比较 194 字符存取 195 字符串插入和删除 196 ...

  2. 笔记 黑马程序员C++教程从0到1入门编程——提高编程03

    目录 4 STL-函数对象 237 函数对象 谓词 238 一元谓词 239 二元谓词 内建函数对象 240 算术仿函数 241 关系仿函数 242 逻辑仿函数 5 STL-常用算法 遍历算法 243 ...

  3. 笔记 黑马程序员C++教程从0到1入门编程——提高编程01

    目录 1 模板 01 模板的概念 02 函数模板基本语法 03 函数模板注意事项 04 函数模板案例-数组排序 05 普通函数与函数模板区别 06 普通函数与函数模板调用规则 07 模板的局限性 08 ...

  4. 【黑马程序员 C++教程从0到1入门编程】【笔记4】C++核心编程(类和对象——封装、权限、对象的初始化和清理、构造函数、析构函数、深拷贝、浅拷贝、初始化列表、友元friend、运算符重载)

    黑马程序员C++教程 文章目录 4 类和对象(类属性[成员属性],类函数[成员函数]) 4.1 封装 4.1.1 封装的意义(三种权限:public公共.protected保护.private私有)( ...

  5. [学习笔记]黑马程序员python教程

    文章目录 思维导图 Python基础知识图谱 面向对象 SQL入门和实战 Python高阶技巧 第一阶段 第九章:Python异常.模块与包 1.9.1异常的捕获 1.9.1.1 为什么要捕获异常 1 ...

  6. 【黑马程序员 C++教程从0到1入门编程】【笔记3】C++核心编程(内存分区模型、引用、函数提高)

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1 内存分区模型 1.1 程序运行前 1.2 程序运行后(手动开辟内存:c语言malloc,c++new) 1.3 new操作 ...

  7. 【黑马程序员 C++教程从0到1入门编程】【笔记2】通讯录管理系统

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.系统需求 2.创建项目 2.1 创建项目 3.菜单功能 4.退出功能 5.添加联系人 5.1 设计联系人结构体 5.2 设 ...

  8. 【黑马程序员 C++教程从0到1入门编程】【笔记1】数据类型、运算符、程序流程结构、数组、函数、指针、结构体

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.C++初识 1.1 第一个c++程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 ...

  9. 【黑马程序员 C++教程从0到1入门编程】【笔记6】C++核心编程(文件操作)

    文章目录 5 文件操作 5.1文本文件 5.1.1写文件 5.1.2读文件 5.2 二进制文件 5.2.1 写文件(用二进制方式写时最好别用c++的string) 5.2.2 读文件 https:// ...

最新文章

  1. 取消Eclipse等号、分号、空格代码自动补全
  2. [Google Guava] 排序: Guava强大的”流畅风格比较器”
  3. spring事务(Transaction)的七种事务传播行为及五种隔离级别
  4. “约见”面试官系列之常见面试题第二十五篇之对vue-router的理解(建议收藏)
  5. rpmbuild FILE
  6. asp.net ajax回调函数
  7. 2020年4月数据库流行度排行:MySQL 成事实王者,国产openGauss引期待
  8. php框架中数据库模型层原理,简单模拟ThinkPHP框架模型层对数据库的链式操作-Go语言中文社区...
  9. 附录-系统环境、系统属性
  10. nodejs计算时间间隔_nodejs 如何定时执行一个函数
  11. qmail 发邮件故障
  12. 主数据治理平台培训规程
  13. 使用element插件点击跳转时报错form-item.vue:315 Uncaught (in promise) TypeErelForm.removeField is not a function
  14. x战娘2服务器维护,x战娘2变态版攻略
  15. 英国部份城市中英文对照
  16. 一种点到特定高维平面的距离的优化算法
  17. 深信服 2022届校园招聘 C++笔试编程题目
  18. (二)使用npm搭建React项目
  19. 阿里云盘最新邀请码,某度颤抖吧(持续更新中~)
  20. 多闪、马桶、聊天宝三帆小舟如何进击航空母舰【微信】

热门文章

  1. C语言入门经典第1课
  2. 在VMware中,双击鼠标左键,ctrl键粘滞问题
  3. C51单片机基础之串口编程实战
  4. 用友U8案例教程存货核算前台操作
  5. [实验室每日一题][20201124][Zip已知明文攻击]
  6. (鸟哥linux私房菜)windos7+centos7.6+U盘安装+安装电脑一个硬盘上。
  7. Python学习手册(第4版) pdf
  8. 原生1.1.2固件iPhone降级至1.0.2教程
  9. 【Presto】URLDecoder: Illegal hex characters in escape (%) pattern 错误处理
  10. CSS 学成网(二)