C++ --- 基础知识与细节(上)

发布时间:2024年01月18日

目录

1. 常量

2.关键字

3.标识符命名规则

4.数据类型

? ? ? ? 4.1 整型

? ? ? ? 4.2实型(浮点型)

? ? ? ? 4.3 字符型

? ? ? ? 4.4 字符串型

????????4.5布尔类型 bool (只占一个字节大小)

5.sizeof关键字

6.数据的输入

7. goto语句

8. 一维数组 // 数组名是常量,进行初始化后,不能再对其进行赋值操作

9.二维数组定义方式:

10.函数:

????????10.1? ? ? ? 函数的定义

? ? ? ? 10.2 值传递和引用传递

11. 指针 (指针就是一个地址)

? ? ? ? 10.1 指针变量的定义和使用:

? ? ? ? ? ? ?10.2 空指针和野指针

? ? ? ? ? ? ?10.3 const修饰指针。

? ? ? ? ? ? ? ? 10.4指针和数组

? ? ? ? ? ? ? ? 10.5指针和函数

12.结构体

? ? ? ? ? ? 12.1 结构体基本使用方法

?????????????????12.2 结构体数组

? ? ? ? ? ? ? ? 12.3 结构体指针

? ? ? ? ? ? ? ? 12.4结构体嵌套结构体

? ? ? ? ? ? ? ? 12.5 结构体做函数参数

? ? ? ? ? ? ? ? 12.6 结构体中const使用场景


1. 常量

作用:用于记录程序中不可更改的数据。

c++定义常量两种方式

? ? ? ? 1. #define 宏常量: #define 常量名 常量值

? ? ? ? ? ? ? ? 通常在文件上方定义,表示一个常量

? ? ? ? 2 const修饰的变量 const 数据类型 常量名 = 常量值

? ? ? ? ? ? ? ? 通常在变量定义前关键字const, 修饰该变量为常量,不可修改。

2.关键字

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

? ? ? ? **在定义变量或常量时候,不要用关键字**

c++关键字如下:

3.标识符命名规则

作用:c++规定给标识符(变量、常量)命名时,有一套自己的规则

*标识符不能是关键字

*标识符只能由字母、数字、下划线组成

*第一个字符必须为字母或下划线

*标识符中区分大小写

4.数据类型

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

? ? ? ? 4.1 整型

short 2字节 -2^15 - 2^15-1

int 4字节 -2^31 - 2^31-1

long 4字节? -2^31 - 2^31-1

long long 8字节 -2^63 - 2^63-1

? ? ? ? 4.2实型(浮点型)

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

float 4字节 7位有效数字

double 8字节 15-16位有效数字

? ? ? ? 4.3 字符型

作用:字符型变量用于显示单个字符

语法 char ch = 'a';

注意1:在显示字符型变量时,用单引号字符括起来,不要用双引号

注意2:单引号内只能有一个字符,不可以是字符串

c和c++字符型变量只占用1个字节。

字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元

? ? ? ? 4.4 字符串型

作用:用于表示一串字符

1.c风格字符串 char 变量名[] = “字符串值”

2. c++风格字符串 string 变量名 = “字符串值”? c++字符串要引用头文件 include<string>

????????4.5布尔类型 bool (只占一个字节大小)

作用:布尔类型数据代表真或假的值

bool类型只有两个值:

true --- 真 本质是1。

false --- 假 本质是0。? ? ? ?

5.sizeof关键字

作用:利用sizeof关键字可以统计数据类型所占内存大小

语法:sizeof(数据类型/变量)

6.数据的输入

作用:用于从键盘获取数据

关键字:cin

语法: cin >> 变量

7. goto语句

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

语法 goto 标记;

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置。

8. 一维数组 // 数组名是常量,进行初始化后,不能再对其进行赋值操作

三种定义方式:

? ? ? ? 数据类型 数组名[数组长度]

? ? ? ? 数据类型 数组名[数组长度] = {值1,值2...}// 这种定义方式,如果在初始化时没有给足够的数,数组会自动将后面的数据默认为0

? ? ? ? 数据类型 数组名[] =? {值1,值2...}

9.二维数组定义方式:

1. 数据类型 数组名[行数][列数];

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

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

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

10.函数:

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

一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。

????????10.1? ? ? ? 函数的定义

? ? ? ? ? ? ? ? 函数的定义一般主要有五个步骤:

? ? ? ? ? ? ? ? ? ? ? ? 1.返回值类型

? ? ? ? ? ? ? ? ? ? ? ? 2.函数名

? ? ? ? ? ? ? ? ? ? ? ? 3.参数列表

? ? ? ? ? ? ? ? ? ? ? ? 4.函数体语句

? ? ? ? ? ? ? ? ? ? ? ? 5.return表达

? ? ? ? 10.2 值传递和引用传递

值传递,形参的值改变并不会影响实参的值?

引用传递,形参的值改变会直接影响实参的值

地址传递,形参的值改变会直接影响实参的值,地址传递在实际调用时,需要传递地址如h(&a,&b)

// 数组 实际进行的是地址传递

11. 指针 (指针就是一个地址)

在64位系统下指针占用八个字节,在32位操作系统下指针占用四个字节(无论是哪种数据类型)

? ? ??作用:可以通过指针间接访问内存

? ? ? *内存编号是从0开始记录的,一般用十六进制数字表示

? ? ? *可以利用指针变量保存地址

? ? ? ? 10.1 指针变量的定义和使用:

? ? ? ? ? ? ? ? 语法: 数据类型 * 变量名;

? ? ? ? ? ? ? ? 例如:

? ? ? ? ? ? ? ? 使用: 可以通过解引用的方式来找到指针指向的内存地址中的有效数据, 在指针前加*,例如 *p ,*代表解引用。

? ? ? ? ? ? ?10.2 空指针和野指针

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

? ? ? ? ? ? ? ? ? ? ? ? 用途:初始化指针变量

? ? ? ? ? ? ? ? ? ? ? ? 注意:空指针指向的内存是不可以访问的

? ? ? ? ? ? ? ? ? ? ? ? ?注意:0-255之间的内存编号是系统占用的,因此不可以访问

?????????????????????????野指针:指针变量指向非法的内存空间。在程序中,空指针和野指针都不是我们申请的空间,所以我们权限对其进行访问。

? ? ? ? ? ? ?10.3 const修饰指针。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? const修饰指针有三种情况:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.const修饰指针 ----- 常量指针? ?例如: const int *p = &a;

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.const修饰常量 ----- 指针常量? ?例如 int * const p = &a;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特点:指针的指向不可以修改,但是指针指向的数据值可以修改? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????3. const即修饰指,又修饰常量。 例如:const int * const p = &a;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特点:指针的指向和指针指向的数据值都不可以修改。

? ? ? ? ? ? ? ? 10.4指针和数组

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

? ? ? ? ? ? ? ? 10.5指针和函数

? ? ? ? void bubbleSort(int *arr, int len)

? ? ? ? void bubbleSort(int arr[], int len) // 这两种定义方式都可以。

12.结构体

? ? ? ? ? ? 12.1 结构体基本使用方法

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

? ? ? ? ? ? ? ? 结构体定义和使用

? ? ? ? ? ? ? ? ? ? ? ? 语法:struct 结构体名 {结构体成员列表};

? ? ? ? ? ? ? ? ? ? ? ? 通过结构体创建变量的方式:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct 结构体名 变量名

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct 结构体名 变量名 = {成员1值, 成员2值...}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 定义结构体时顺便创建变量

// 在创建变量时,struct关键字可以省略?

?????????????????12.2 结构体数组

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

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

????????????????????????

? ? ? ? ? ? ? ? 12.3 结构体指针

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

? ? ? ? ? ? ? ? ? ? ? ? 利用操作符->可以通过结构体指针来访问结构体属性

? ? ? ? ? ? ? ? 12.4结构体嵌套结构体

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

? ? ? ? ? ? ? ? 12.5 结构体做函数参数

? ? ? ? ? ? ? ? ? ? ? ? 作用:将结构体作为参数向函数中传递

? ? ? ? ? ? ? ? ? ? ? ? 传递方式有三种:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?值传递? // 实际是赋值,如果数据量特别大,使用值传递会消耗大量空间和时间

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?地址传递

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 引用传递

? ? ? ? ? ? ? ? 12.6 结构体中const使用场景

? ? ? ? ? ? ? ? ? ? ? ? 作用:用const来防止误操作

????????????????????????

文章来源:https://blog.csdn.net/weixin_73936404/article/details/135581193
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。