C++整理笔记03

11.指针@[TOC]
(1)指针的基本概念
指针的作用:可以通过指针间接访问内存。
【注】内存编号是从0开始记录的,一般用十六进制数字表示。
【注】可以利用指针变量保存地址。(指针就是一个地址)
(2)指针变量的定义和使用
语法:数据类型 * 指针变量名;
在这里插入图片描述

(3)指针所占内存空间
指针在32位操作系统下:占用4个字节空间。(不管是什么数据类型)
指针在64位操作系统下:占用8个字节空间。(不管是什么数据类型)
【注】 在这里插入图片描述

上图中x64是64位操作系统;x86是32位操作系统
(4)空指针和野指针
①空指针
指针变量指向内存中编号为0的空间。
用途:初始化指针变量
【注】空指针指向的内存是不可以访问的。0~255之间的内存编号是系统占用的,因此不可以访问
②野指针
指针变量指向非法的内存空间。
【注】在程序中,尽量避免出现野指针
【总结】空指针和野指针都不是我们申请的空间,因此不要访问。
(5)const修饰指针
有三种情况:
① const修饰指针--常量指针 (const int * p的特点:指针的指向可以修改,但是指针指向的值不可以改)
② const修饰常量—指针常量 (int * const p的特点:指针的指向不可以改,但是指针指向的值可以改)
③ const既修饰指针,又修饰常量(const int * const p的特点:指针的指向和指针指向的值都不可以改)
【技巧】看const右侧跟着的是指针(int)还是常量(p),是指针就是常量指针,是常量就是指针常量(或者这样记:就是指针,const就是常量,按照前后顺序读);const后面跟着什么,什么不能改(跟着int,则指向的值不能改;跟着p,则指针的指向不能改)。
(6)指针和数组
利用指针访问数组中元素
在这里插入图片描述

【注】 在这里插入图片描述

(7)指针和函数
利用指针作函数参数,可以修改实参的值。
①值传递
在这里插入图片描述
在这里插入图片描述

②地址传递
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【注】如果是地址传递,可以修改实参。

在这里插入图片描述
在这里插入图片描述

【注】如果不想修改实参,就用值传递;如果想修改实参,就用地址传递。
【注】冒泡排序函数:
在这里插入图片描述

【注】int len是为了获取数组的长度。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


12.结构体@[TOC]
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
(1)结构体的定义和使用
语法:struct 结构体名{ 结构体成员列表 };
通过结构体创建变量的方式有三种:
① struct 结构体名 变量名
② struct 结构体名 变量名={ 成员1值,成员2值…}
③ 定义结构体时顺便创建变量
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【注】常用的是第一种和第二种。
【注】在创建s1时,struct关键字可以省略: 在这里插入图片描述

【注】① 定义结构体的关键字时struct,不可省略。
② 创建结构体变量时,关键字struct可以省略。
③结构体变量利用操作符 “ “ 访问成员。
(2)结构体数组
将自定义的结构体放入到数组中方便维护。
语法:struct 结构体名 数组名{ 元素个数 } = { { },{ },…{ } }
在这里插入图片描述
在这里插入图片描述

(3)结构体指针
通过指针访问结构体中的成员
利用操作符 -> 可以通过结构体指针访问结构体属性。
在这里插入图片描述

(4)结构体嵌套结构体
结构体中的成员可以是另一个结构体。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)结构体做函数参数
将结构体作为参数向函数中传递
传递方式有两种:值传递和地址传递
在这里插入图片描述
在这里插入图片描述
【注】值传递不可以改变主函数中的值:
在这里插入图片描述
在这里插入图片描述

地址传递可以改变主函数中的值:
在这里插入图片描述
在这里插入图片描述

【注】如果不想修改主函数中的数据,用值传递,反之用地址传递。
(6)结构体中const使用场景
用const来防止误操作
【注】将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来。(即采用地址传递)
在这里插入图片描述

全部评论
学习C++整理的笔记
点赞
送花
回复
分享
发布于 2022-10-18 14:28 河南

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务