1 C++初识
1.1 编写C++程序步骤
四个:创建项目、创建文件、编写代码、运行程序

1.2 注释
单行注释://描述信息 (通常放在一行代码的上方,或者一条语句的末尾)

多行注释:/描述信息/ (通常放在一段代码的上方)

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

1.4 常量
作用:用于记录程序中不可更改的数据
C++定义常量的两种方式:
①#define 宏常量:#define 常量名 常量值 (通常在文件上方定义,表示一个常量)
②const修饰的变量:const 数据类型 常量名 = 常量值 (通常在变量定义前加关键字const,修饰该变量为常量,不可更改)

1.5关键字
作用:C++中预先保留的单词(标识符)

1.6 标识符命名规则

给变量起名时,力求见名知意

2 数据类型
意义:给变量分配合适的内存空间
2.1 整型
作用:表示整数类型的数据
根据所占内存空间不同,有短整型short、整型int、长整型long、长长整型long long四种。

2.2 sizeof关键字
作用:统计数据类型所占的内存大小
语法:sizeof(数据类型/变量)

2.3 实型(浮点型)
作用:表示小数
浮点型变量有两种:单精度float、双精度double。二者区别在于表示的有效数字范围不同,float占用4字节,7位有效数字;double占用8字节,15-16位有效数字。
注意:1.定义数据类型是单精度float时,在初始值后要加f,因为默认是双精度的;2.不管输入的初始值是多少位有效数字,只能显示6位有效数字,这是count的问题,count有默认的输出位数,想输出小数点后14位要另外设置count输出精度。


2.4 字符型
作用:字符型变量用于显示单个字符
语法:char ch = ‘a’ ;
注意:1.用单引号而非双引号;2.单引号内只能有一个字符,不能是字符串;3.字符变量只占用1个字节,且不是把字符本身放到内存中存储,是将对应的ASCII编码放到存储单元。

2.5 转义字符
作用:表示一些不能显示出来的ASCII字符
常用的有 \n,\\, \t

2.6 字符串型
作用:用于表示一串字符
两种风格:
①C风格字符串:char 变量名[] = “字符串值”
②C++风格字符串:string 变量名 = “字符串值”
注意:C++风格的需要包含string的头文件

2.7 布尔类型bool
作用:代表真或假的值
bool类型只有两个值:true——真(1);false——假(0)
占1个字节大小

2.8数据的输入
作用:用于从键盘获取数据
关键字:cin
语法:cin >> 变量

3 运算符
作用:用于执行代码的运算
3.1算术运算符
作用:用于处理四则运算

3.2 赋值运算符
作用:用于将表达式的值赋给变量
=、+=、-=、*=、/=、%=
3.3 比较运算符
作用:用于表达式的比较,并返回一个真值或假值
==、!=、<、>、<=、>=
3.4 逻辑运算符
作用:用于根据表达式的值返回真值或假值
&&与、||或、!非

4 程序流程结构
C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
4.1 选择结构
4.1.1 if语句
三种形式:单行格式、多行、多条件、嵌套
4.1.2 三目运算符
作用:通过三目运算符实现简单的判断
语法:表达式1 ?表达式2 :表达式3
若表达式1的值为真,执行表达式2,并返回表达式2的结果;反之,执行表达式3,并返回表达式3的结果。
注:在C++中,三目运算符返回的是变量,可以继续赋值

4.1.3 switch语句
作用:执行多条件分支语句
switch、case、break、default
注:
1.case里如果没有break,那么程序会一直向下执行;
2.与if语句相比,switch在判断时,只能是整型或者字符型,而不能是一个区间;在多条件判断时,switch结构清晰,执行效率高。
4.2 循环结构
4.2.1 while循环语句
作用:满足循环条件,执行循环语句
注意:在写循环条件时一定要注意避免死循环的出现
4.2.2 do···while循环语句
作用:满足循环条件,执行循环语句
语法:do(循环语句)while(循环条件)
注意:与while的区别在于do···while会先执行一次循环语句,再判断循环条件
水仙花数案例练习:
获取个位:取模于10
获取十位:先整除于10,再取模于10
获取百位:整除于100

4.2.3 for循环语句
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
执行顺序:0123123123···

4.2.4 嵌套循环

4.3 跳转语句
4.3.1 break语句
作用:用于跳出选择结构或者循环结构
使用时机:①出现在switch条件语句中,作用是终止case并跳出switch;②出现在循环语句中,作用是跳出当前的循环语句;③出现在嵌套循环中,跳出最近的内层循环语句。
4.3.2 continue语句
作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
注意:break会退出循环,而continue不会
4.3.3 goto语句
作用:可以无条件跳转语句
注意:不推荐使用,以免造成程序流程混乱。
5 数组
5.1 概述
几个集合,里面存放了相同类型的数据元素
特点:①数组中的每个数据元素是相同的数据类型;②数组是由连续的内存位置组成的
5.2 一维数组
5.2.1一维数组定义方式
三种方式:
①数据类型 数组名[数组长度];
②数据类型 数组名[数组长度] = {值1,值2,···};
③数据类型 数组名[ ] = {值1,值2,···};
注意:①数组名的命名规范与变量名命名规范一致,不要和变量重名;②数组中下标是从0开始索引。
5.2.2一维数组数组名
用途:
①可以统计整个数组在内存中的长度;
整个数组所占用的内存空间大小为sizeof(arr)
数组元素个数为sizeof(arr)/sizeof(arr[0])
②可以获取数组在内存中的首地址。(数组名等于数组首地址)
第一个元素的地址为(int)&arr[0] (&为取地址符号)
注意:数组名是常量,不可以进行赋值操作。
练习案例:五只小猪称体重,数组元素逆置
5.2.3冒泡排序
作用:最常用的排序算法,对数组内元素进行排序
1.比较相邻的元素,如果第一个比第二个大,则交换;
2.对每一对相邻的元素做同样的工作,执行完毕后,找到第一个最大值;
3.重复以上步骤,每次比较次数-1,直到不需要比较。
5.3 二维数组
5.3.1二维数组定义方式
在定义二维数组时,如果初始化了数据,可以省略行数
5.3.2二维数组数组名
作用:查看二维数组所占内存空间,获取二维数组首地址
5.3.3二维数组案例-考试成绩统计

6 函数
6.1 概述
作用:将一段经常使用的代码封装起来,减少重复代码
通常,一个较大的程序会分为若干个程序块,每个模块实现特定的功能。
6.2 函数的定义
一般有5个步骤:
1)返回值类型(一个函数可以返回一个值)
2)函数名;
3)参数列表(使用该函数时,传入的数据)
4)函数体语句;
5)return表达(函数执行完后,返回相应的数据)
6.3 函数的调用
功能:使用定义好的函数
语法:函数名(参数)
注:函数定义里小括号内称为形参,函数调用时传入的参数为实参
6.4 值传递
所谓值传递,就是函数调用时实参将数值传入给形参
值传递时,如果形参发生任何改变,并不会影响实参
6.5 函数的常见样式
常见的有4种:无参无返;有参无返;无参有返;有参有返
6.6 函数的声明
作用:告诉编译器函数名称及如何调用函数,函数的实际主体可单独定义。
函数的声明其实就是编译器不智能(顺序执行/不同的文件夹)的BUG存在
main函数放前面要声明
注意:函数的声明可以有多次,但是函数的定义只能有一次。
6.7 函数的分文件编写
作用:让代码结构更加清晰
一般有四个步骤:
1)创建后缀名为.h的头文件;
2)创建后缀名为.cpp的源文件;
3)在头文件中写函数的声明;
4)在源文件中写函数的定义。

7 指针
7.1 基本概念

指针的作用:可以通过指针间接访问内存(地址编号)
内存编号是从0开始记录,一般用十六进制数字表示;可以利用指针变量保存地址。
指针就是地址
7.2 指针变量的定义和使用
定义:数据类型 * 指针变量名
指针变量和普通变量的区别:普通变量存放的是数据,指针变量存放的是值的地址
使用:*p(解引用),可以操作指针变量指向的内存空间
指针声明必须指定指针指向的数据的类型
指针真正的用武之地在于在运行阶段分配未命名的内存以存储值
7.3 指针所占内存空间
指针也是一种数据类型,在32位操作系统下,占用4个字节空间,在64位操作系统下,占用8个字节
7.4 空指针和野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
内存编号为0-255为系统占用内存,不允许用户访问

野指针:指针变量指向非法的内存空间
总结:空指针和野指针都不是我们自己申请的空间,因此不要访问。
7.5 const修饰指针
const修饰指针有三种情况:
1)const 修饰指针——常量指针
const int * p = &a
特点:指针的指向可以修改,但是指针指向的值不可以更改
2)const 修饰常量——指针常量
int * const p = &a
特点:指针的指向不可以修改,但是指针指向的值可以更改
3)const 既修饰指针,又修饰常量
const int * const p =&a
特点:指针的指向及指向的值都不可以更改
7.6指针和数组
作用:利用指针访问数组中的元素
7.7指针和函数
作用:利用指针作函数参考,可以修改实参的值
注:值传递不可修改实参的值。
总结:如果不想修改实参,就用值传递,如果想修改实参,就用地址传递。
7.8指针、数组、函数
封装一个函数,利用冒泡排序,实现对整型数组的升序排列
注:当数组名传入到函数作为参数时,被退化为指向首元素的指针

8 结构体
8.1 概念

结构体属于用户自定义的数据类型(一些类型集合组成的一个类型),允许用户存储不同的数据类型
8.2结构体的定义和使用
语法:struct 结构体名 { 结构体成员列表 };
通过结构体创建变量的方式有三种:
• struct 结构体名 变量名
• struct 结构体名 变量名 = {成员1值, 成员2值···}
• 定义结构体时顺便创建变量
注:
1.定义结构体时的关键字是struct,不可以省略
2.创建结构体变量时,关键字struct可以省略
3.结构体变量利用操作符“.”访问成员
8.3 结构体数组
作用:将自定义的结构体放入到数组中方便维护
语法:struct 结构体名 数组名[元素个数]={ {},{},···,{} }
8.4 结构体指针
作用:通过指针访问结构体中的成员
利用操作符->可以通过结构体指针访问结构体属性(成员)
8.5 结构体嵌套结构体
作用:结构体中的成员可以是另一个结构体
案例:每个老师辅导一个学生,一个老师的结构体中,记录一个学生的结构体
8.6 结构体做函数参数
作用:将结构体作为参数向函数中传递
传递方式:值传递;地址传递
注:在值传递中,实参不会发生改变,而在地址传递中,实参会发生改变。
8.7 结构体中const使用场景
作用:用const来防止误操作
使用场景:
将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来,加const防止函数体中的误操作,地址传递时修改内容
(常量指针不能修改值,但可以更改指针的指向)

PS:以上为黑马C++入门编程课程的笔记,如有错误恳请大家指正。

C++入门学习(黑马程序员课程讲义)——第一阶段相关推荐

  1. Java入门-学习黑马程序员Java基础视频教程(到P92)

    目录 P0:写在前面的小知识 P3:Java环境搭建: JDK安装.常用命令 P4:入门程序HelloWorld P7:补充知识:JDK组成.跨平台原理 P8:补充知识:JDK安装后Path和JAVA ...

  2. Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)

    文章目录 postman工具 get和post 如何给路由传参 解析 @app.route('')这个叫视图函数 Jinja2模板引擎 动态传参 注释.变量代码块以及控制代码块的使用 注释:ctrl+ ...

  3. Java语法快速学习-黑马程序员(个人整理版本)

    Java入门基础视频教程,java零基础自学首选黑马程序员Java入门教程(含Java项目和Java真题)_哔哩哔哩_bilibili为了帮助广大对Java有兴趣和立志进入本行业的零基础学员,本套课程 ...

  4. 30岁后学oracle还有前途吗,程序员入门学习_程序员30岁后的出路

    下面w3cschool给程序员小伙伴们有些程序员学习编程一上来就想着月薪1W+以上,这样的学习过程会非常痛苦,很 0.C++入门学习方法 首先要对C++有学习基础语法,熟悉调用各种库函数,这时你便成为 ...

  5. 黑马程序员课程-Vue项目实战-Element-UI——电商后台管理系统主页制作

    黑马程序员视频_主页制作 目录 一.主页布局 1.整体布局:先上下划分,再左右划分 2.主页header布局 3.左侧菜单布局:菜单分为两级,并且可以折叠 二. 通过接口获取菜单数据 1.请求预处理 ...

  6. C++基础入门《黑马程序员》

    C++基础入门 0 前言  1.配套学习视频:https://www.bilibili.com/video/BV1et411b73Z  2.修复了图片问题和MD笔记显示问题,补充了一些知识  3.课程 ...

  7. 零基础学C++——黑马程序员课程笔记(C++核心编程篇)

    封面来自互联网侵删 视频地址:点击访问 (我这里开发工具选用VSstudio) 此笔记有三个系列: C++基础语法入门篇 点击查看 C++核心编程篇 C++提高编程篇 本阶段主要针对C++面向对象编程 ...

  8. 零基础学C++——黑马程序员课程笔记(C++基础语法入门篇)

    封面来自互联网侵删 视频地址:点击访问 (我这里开发工具选用VSstudio) 此笔记有三个系列: C++基础语法入门篇 C++核心编程篇 点击查看 C++提高编程篇 文章目录 C++初识 变量 常量 ...

  9. JavaWeb——黑马程序员课程笔记

    视频地址:点击跳转 全程使用开发工具:IDEA Mysql 此篇几乎所有需要的配置文件都可以区黑马公众号找到 目录 JavaWeb介绍 数据库 数据库相关概念 关系型数据库 SQL SQL简介 SQL ...

最新文章

  1. mlcc激光雷达与相机外参标定初体验
  2. 360金融发布Q2财报:净利6.92亿,同比增长114%,大数据与AI加持的科技服务是新亮点?
  3. 一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。...
  4. 源码解读_Go Map源码解读之Map迭代
  5. Hibernate 笔记4 实现对数据库的增删改查
  6. (ECC)椭圆曲线加密算法原理和C++实现源码
  7. 比特币的密钥、地址、钱包
  8. 为什么要学习Kotlin
  9. java无法启动安装程序,Windows Fix中无法启动Java更新安装程序错误
  10. 雷达感应模块智能照明应用,多普勒效应原理,微波雷达存在感应
  11. 如何解决网站不安全信息?免费SSL证书
  12. python将数据导入数据库 atomic_使用Atomic
  13. 【NKOJ-4234】三角分形
  14. flv转mp4选项设置
  15. Editor\Data\il2cpp/build/deploy/net471/il2cpp.exe did not run properly!
  16. 【paddlepaddle安装报错系列】DLL lond failed:找不到指定模块
  17. 金蝶EAS开发 第二弹:了解开发工具与基本使用(下)
  18. java工程师面试常见问题_JAVA软件工程师面试遇到的十个问题,这些你都知道吗?...
  19. ltspice语言中文_LTspice-一简介(中文教程)
  20. vue3 项目中如何输出webpack的config.js

热门文章

  1. Oracle EBS Workflow 下载/上传
  2. 计算机保研要不要刷实习?
  3. 陈果《好的爱情》读书笔记(3)——人啊,认识你自己
  4. Xna Beta的starter Kit spacewar研究手记(1)
  5. linux脚本文件编辑器,Shell文件编辑器
  6. 教你如何配置CISCO路由器
  7. oracle 表 实时同步,跨Oracle数据库实现表级别的实时同步
  8. 【网络科普】Wi-Fi 安全接入方法 - WEP, WPA, WPS
  9. Facebook Android客户端热更新
  10. 自适应旁瓣matlab,相控阵雷达自适应旁瓣对消技术的研究