300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C++入门学习(黑马程序员课程讲义)——第一阶段

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

时间:2020-09-07 16:49:42

相关推荐

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

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++入门编程课程的笔记,如有错误恳请大家指正。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。