C++学习(指针、引用、结构体)详解
创始人
2025-06-01 13:13:37
0

1编译软件

Visual Studio

2基本语法

2.1指针

2.1.1指针的使用

//定义一个指针int a = 10;int * p;//让指针记录变量a的地址p = &a;cout << "a的地址:" << &a << endl;cout << "p:" << p << endl;cout << "p:" << *p << endl;//使用指针//可以通过解引用的方式来找到指针*p = 1000;cout << "a的地址:" << a << endl;cout << "p:" << *p << endl;

2.1.2指针的内存

在32位操作系统中占用4字节,在64位操作系统中占用8字节

更改成64位后,指针的内存就是8位了

2.1.3空指针

指针变量指向了内存中编号为0 的空间 用来初始化指针变量,空指针指向的内存是不可以被访问的。

    //定义一个指针 指针变量指向内存地址为0的空间int * p = NULL;//访问空指针报错 内存编号为0-255为系统占用 不允许用户访问*p = 100;cout << "p:" << p << endl;cout << "*p" << *p << endl;

2.1.4野指针

指针变量指向非法的内存空间

空指针和野指针都不是我们申请的内存空间,都不能访问。

2.1.5 const修饰指针

const修饰指针:常量指针

指针的指向可以修改指针指向的值不可以修改

const修饰常量:指针常量

指针的指向不可以修改但是指针指向的值可以修改

const既修饰指针又修饰常量

指针的指向和指针指向的值都不可以修改

2.1.6指针与数组

2.1.7指针和函数

值传递:不会改变实参

地址传递:会修改实参的值

2.2结构体

2.2.1结构体的定义和创建

用户自定义的数据类型,允许用户存储不同的数据类型

创建使用的几种方式,创建结构体对象的时候可以省略struct,但是定义的时候不能省略

2.2.2结构体数组

将自定义的结构体放入到数组中。

2.2.3结构体指针

关于对象调用成员用”.”还是”->”,看成员在堆还是栈上,在堆中用-> ,在栈中用.

2.2.4结构体嵌套结构体

这里要注意的是想在Teacher里使用Student结构体,必须先创建Student结构体

2.2.5结构体作函数参数

可以看到在地址传递中main函数中的值也发生了改变,在值传递中Main函数中的值没有变

2.2.6结构体中的const使用场景

将函数中的形参改成指针,可以减少内存空间,不会复制新的副本出来。但是为了防止修改了实参中的数据,在数据前加上const就可以解决问题,这样实参就不会被修改了。

2.3引用

作用:给一个变量起别名 数据类型&别名 = 原名

引用后和原名指向同一个内存。

2.3.1引用的注意事项

1 引用必须初始化

2 初始化后不能被改变

2.3.2引用作函数参数

函数传参时,可以利用引用让形参修饰实参,简化指针修改实参

在值传递中,不能改变实参的值,地址传递可以改变实参,引用传递也可以。

2.3.3引用作函数的返回值

引用的本质是一个指针常量,指针的指向不可以修改,但是指针指向的值可以修改。

不要返回局部变量的引用

函数的返回值是一个引用,那么函数的调用可以作为一个左值。

2.3.4常量引用

用来修饰形参防止误操作

引用必须指向一个内存空间,栈区或者堆区,不能是常量区中的。

加一个const常量就可以解决问题,相当于先创建一个temp=10,然后将引用指向temp

int a = 10;
const int & ref = 10;  //int temp=10; const int & ref = temp;

相关内容

热门资讯

安卓共有多少种系统,究竟有多少... 你有没有想过,安卓这个我们每天不离手的操作系统,竟然有那么多不同的版本呢?没错,安卓系统就像一个大家...
安卓系统怎么播放swf,And... 你有没有遇到过这种情况:手里拿着一部安卓手机,想看一个SWF格式的动画,结果发现怎么也打不开?别急,...
pos机安卓系统跟win系统,... 你有没有想过,那些在我们生活中默默无闻的POS机,竟然也有自己的操作系统呢?没错,就是安卓系统和Wi...
俄罗斯封禁安卓系统,本土化替代... 俄罗斯封禁安卓系统的背后:技术、经济与社会的影响在数字化浪潮席卷全球的今天,智能手机已成为我们生活中...
安卓系统总是弹出权限,安卓系统... 手机里的安卓系统是不是总爱和你玩捉迷藏?每次打开一个应用,它就跳出来问你要不要给它开权限,真是让人又...
安卓系统测血氧,便捷健康生活新... 你知道吗?现在科技的发展真是让人惊叹不已!手机,这个我们日常生活中不可或缺的小玩意儿,竟然也能变身成...
蓝光助手安卓系统的,深度解析与... 你有没有发现,现在手机屏幕越来越大,看视频、刷抖音,简直爽到飞起!但是,你知道吗?长时间盯着屏幕,尤...
安卓系统如何隐藏提示,Andr... 你是不是也和我一样,在使用安卓手机的时候,总是被那些弹出来的提示信息打扰到?别急,今天就来教你怎么巧...
安卓6.0系统如何分区,And... 你有没有想过,你的安卓手机里那些神秘的分区到底是怎么来的?别急,今天就来给你揭秘安卓6.0系统如何分...
安卓系统图片怎么涂鸦,指尖上的... 你有没有想过,在安卓系统的手机上,那些单调的图片也能变得生动有趣呢?没错,就是涂鸦!今天,就让我来带...
安卓系统40g,40GB存储空... 你有没有发现,最近你的安卓手机突然变得有点“胖”了呢?没错,就是那个传说中的40G!别急,别慌,今天...
安卓5.0系统怎么重置,轻松实... 手机用久了是不是感觉卡得要命?别急,今天就来教你怎么给安卓5.0系统来个彻底的重置,让它焕发新生!一...
安卓系统是不是快要,安卓系统即... 你有没有发现,最近安卓系统好像有点儿“不安分”了呢?是不是快要发生什么大事情?咱们一起来探个究竟吧!...
安卓6系统和8系统差别,全面对... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,安卓系统也跟着时代的步伐,从6系统一路升...
安卓11系统推荐下载,体验全新... 你有没有发现,最近手机界又掀起了一股热潮?没错,就是安卓11系统!这款全新的操作系统一经推出,就吸引...
原生安卓系统怎样升级,从基础到... 你有没有发现,你的安卓手机用久了,有时候就像老牛拉车一样,慢吞吞的?别急,今天就来给你支个招,让你的...
安卓13系统怎么开发,开发者的... 你有没有听说安卓13系统已经发布了?这可是个大新闻呢!作为一个热衷于手机开发的小伙伴,你是不是也跃跃...
安卓q系统镜像下载,轻松升级体... 你有没有听说安卓Q系统已经发布了?这可是安卓家族里的一大亮点呢!今天,我就要来给你详细介绍一下安卓Q...
安卓系统色彩校正软件,打造个性... 你有没有发现,手机屏幕的色彩有时候会让人感觉不太对劲?有时候,画面看起来有点灰蒙蒙的,有时候又太艳丽...
苹果能否下个安卓系统,开启新篇... 你有没有想过,苹果的iOS系统会不会有一天突然宣布,它要拥抱安卓的大家庭呢?想象iPhone和iPa...