C++入门语法 需要大量背记和练习

这里写目录标题

一 C++初识

1.1 变量:

创建一个变量的语法:数据类型 变量名 = 变量初始值;
变量存在的意义:方便我们管理内存空间。

1.2 常量:

作用:用于记录程序中不可更改的数据。
C++定义常量两种方式
① #define 宏常量 : #define 常量名 常量值
② const修饰的变量:

1.3 关键字:

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

1.4 标识符命名规则

① 标识符不可以是关键字
② 标识符只能由字符,数字,下划线组成
③ 第一个字符必须为字母或下划线
③ 标识符中字母区分大小写

二 数据类型

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

2.1 整型

作用:整型变量表示的是整数类型的数据
C++ 中能够表示整型的类型有以下几种方式,区别在于 所占内存空间不同

短整型 short 2字节 取值范围 -2^15 ~ 2^15-1
整型 int 4字节 取值范围 -2^31 ~ 2^31-1
长整型 long ? 取值范围 -2^31 ~ 2^31-1
长长整型 long long 8字节 取值范围 -2^63 ~ 2^63-1

特殊:
长整型 long windows 为4字节, linux (32位) 4字节,8字节(64位)

C++primer 第30页
C++标准规定的尺寸最小值,但同时允许编译器赋予这些类型更大的尺寸。
而且规定:
一个int至少和一个short一样大, (int 规定的最小为2字节,实际都为4字节)
一个long至少和一个int一样大, (long最小为4字节,实际字节如上)
一个long long至少和一个long一样大。

熟知字节数避免越界,

2.2 sizeof关键字

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

2.3 实型(浮点型)

作用:用于表示小数
浮点型变量分为两种
①.单精度 float
②.双精度 double
两者区别在于有效数字范围不同: 是有效数字
float 4字节 有效数字范围:7位有效数字
double 8字节 有效数字范围:15~16位有效数字

float f1 = 3.14;
//默认情况 3.14 会被编译器识别为double
//在赋值语句发生之前会先发生 类型转换
通常如果的确是要声明一个单精度我们会这样做
float f1 = 3.14f;

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

2.4 字符型

作用:字符型变量用于显示单个字符 语法: char ch = ‘a’;
单引号只能有一个字符,不可以是字符串。

C和C++中字符型变量只占用1个字节
字符型变量并不是把字符本身放到内存中存储,而是将对应的ascii编码放入到存储单元。

字符型变量强转成整型 (int)ch
常见 ascii 码 97 a 65 A 32 空格 48 0

2.5 转义字符

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

2.6 字符串型

作用:用于表示一串字符

① char 变量名[ ] = “字符串”
② C++风格字符串 string str = “字符串”; 但是在用之前必须包含 头文件

2.7 布尔类型 bool

作用:bool类型只有两个值:
true — 真 (1) (非0为真,0就是假)
false— 假 (0)

bool类型 只占用1个字节大小。

2.8 数据的输入

作用:用于从键盘获取数据 关键字 cin >> 变量

三 运算符

作用:用于执行代码的运算

3.1 算术运算符

取模运算:两个小数不可以做取模运算,两个数相除数不可以为0,
只有整型变量可以进行取模运算

前置递增 先加 后使用
后置递增 先使用 最后再加

3.2 赋值运算符

+= -= *= /= %=

3.3 比较运算符

作用:用于表达式的比较,并返回一个 真值 或 假值 (非0为真)
== != < > <= >=

3.4 逻辑运算符

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

与 && 或 || 非 !

四 程序流程结构

C/C++ 支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构

  • 顺序结构:程序按顺序执行,不发生跳转。
  • 选择结构:依据条件是否满足,有选择地执行相应功能。
  • 循环结构:依据条件是否满足,循环多次执行某段代码。

4.1 选择结构

4.1.1 if 语句 作用:执行满足条件地语句

4.1.2 三目运算符 作用: 通过三目运算符实现简单的判断语法:表达式1 ? 表达式2 : 表达式3

4.1.3 switch 语句 作用:执行多条件分支语句

if 和 switch 区别?
switch 缺点:判断时候只能是整型或者字符型,不可以是一个区间
switch 优点:结构清晰,执行效率高

4.2 循环结构 作用:满足循环条件,执行循环语句

4.2.1 while循环

4.2.2 do…while循环语句 (先执行一次 再判断)

4.2.3 for循环

4.2.4 嵌套循环

4.3 跳转语句

4.3.1 break语句 作用:退出循环

4.3.2 continue语句 作用: 在循环语句,执行到本行,后面不执行,直接执行下一次循环,

4.3.3 goto语句 作用:可以无条件跳转语句 语法:

goto 标记: 然后标记必须存在
goto FLAG:

FLAG:

五 数组

特点:放在一块连续的内存空间中,数组中每个元素都是相同数据类型
下标 从零开始

5.1 一维数组

5.2.1 一维数组定义方式 (定义数组的时候,必须有初始长度。)

1.数据类型 数组名[ 数组长度 ]
2.数据类型 数组名[ 数组长度 ] = { 值1,值2…}
如果初始化数据时候,没有全部填写完,会用0来填补剩余数据
3.数据类型 数组名[ ] = { 值1,值2…} 根据后面的值去推导数组长度

5.2.2 一维数组 组名用途

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

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

5.2 二维数组

5.2.1 二维数组定义方式

1.数据类型 数组名[ 行数 ][ 列数 ]
2.数据类型 数组名[ 行数 ][ 列数 ] = {{数据1,数据2},{数据3,数据4…}}
3.数据类型 数组名[ 行数 ][ 列数 ] = {数据1,数据2,数据3,数据4…}
4.数据类型 数组名[ ][ 列数 ] = {数据1,数据2,数据3,数据4…}

5.2.2 二维数组 组名用途

1.可以查看占用内存空间大小
2.可以查看二维数组的首地址

六 函数

6.1 概述:作用:将一段经常使用的代码封装起来,减少重复代码

6.2 函数的定义

语法:返回值类型 函数名( 参数列表 ) { 函数体语句 return表达式 }

6.3 函数的调用

6.4 值传递 ( 函数调用时实参将数值传入给形参 )

值传递时,如果形参发生改变,并不会影响实参。

6.5 函数的常见样式

6.6 函数的声明

告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义。
函数的声明可以多次,但是函数的定义只能有一次。

6.7 函数的分文件编写 作用:让代码结构更加清晰

七 指针

7.1 指针的基本概念 作用: 可以通过指针间接访问内存

7.2 指针变量的定义和使用

7.3 指针所占内存空间:

指针也时种数据类型,
VS 目标计算机是 x86 代表32位 x64代表 64位 (工具栏第二排 Debug后面)
32位 是4个字节,64位 是8个字节。

7.4 空指针和野指针

空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的; 0-255之间的内存编号是系统占用的,不可访问

野指针:指针变量指向非法的内存空间 (在程序中,尽量避免使用野指针)

7.5 const修饰指针

7.5.1 const 修饰指针—常量指针 改指针

特点:指针的指向可以修改,但是指针指向的值不可以改。

7.5.2 const 修饰常量—指针常量 改常量

特点:指针的指向不可以改,指针指向的值可以改。

7.5.3 const 既修饰指针,又修饰常量

特点:都不能改

7.6 指针和数组 作用:利用指针访问数组中元素

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

7.8 指针,数组,函数

八 结构体

8.1 结构体基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。

8.2 结构体定义和使用:

语法 struct 结构体名 { 结构体成员列表 };
通过结构体创建变量的方式:
1.struct 结构体名 变量名
2.struct 结构体名 变量名 = { 成员1,成员2…};
3.定义结构体时顺便创建变量

8.3 结构体数组 作用:将自定义的结构体放入到数组中方便维护。

语法:struct 结构体名 数组名[ 元素个数 ] = { {} , {} … {} }

8.4 结构体指针 作用:通过指针访问结构体中的成员

8.5 结构体嵌套结构体 作用:结构体中的成员可以是另一个结构体

8.6 结构体做函数参数 作用:将结构体作为参数向函数中传递。

传递方式有两种: 1.值传递 2.地址传递

如果不想修改主函数中的数据,用值传递,反之用地址传递。

8.7 结构体中const使用场景 作用:用const防止误操作。

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

猜你喜欢

转载自blog.csdn.net/GameStrategist/article/details/107997530