指针(一)

指针基础

在C++中,指针是至关重要的组成部分。它是C++语言最强大的功能之一,也是最棘手的功能之一。

指针具有强大的能力,其本质是协助程序员完成内存的直接操纵

指针:特定类型数据在内存中的存储地址,即内存地址。

指针只是一个逻辑概念,其实际应用是:指针变量,如,变量p就是指针变量。

指针变量的定义语法:

1.先声明,后赋值:

int num = 10;

int* p;
p = #

2.声明和赋值同步:

int num = 10;
int* p = &num

变量类型(如上int)表示,指针(内存地址)指向的内存区域,存放的是整型数据

*符号有两种含义:

  - 声明时:*p,表示变量p,是指针变量(存的是内存地址)

  - 使用时:*p,表示取指针p执行内存区域的数据

cout << p;  //输出num变量地址
cout << *p; //输出数据10

&符号表示取变量内存地址,是一个取内存地址的单目操作符

细节

说明

示例

指针变量类型

说明指针指向区域的数据类型

int *p; 指针指向区域存放int

*符号,在声明

指代变量为指针变量

int * p;

*符号,在使用

取指针指向内存区域的数值

*p 表示数字10

&符号

取内存地址

&num,取num变量内存地址

野指针

野指针:被声明但未初始化(赋值)的指针。这个指针会指向随机的内存空间,可能导致未知问题。

野指针:仅声明未赋值的指针。不可应用,因为其指向的内存区域是随机的、未知的。

普通变量是对数值进行操作,不会有安全问题,所以没有“野变量”一说。

指针对内存直接操作,所以一旦声明但未赋值,就是“野指针”,一旦使用,后果不可预料。

int * p;    // 声明指针(分配了8字节空间), p是野指针因为未被赋值
*p = 10;    // 将10赋予指针p所指向的空间

     //*p = 10; 是向未知的、随机的4字节内存区域,修改存储值为10

空指针

为避免野指针,应养成良好的变成习惯,及时初始化,或将指针置为空指针更为安全。

int* p = NULL;
int* p = nullptr;
•NULL是C++内置的宏,表示”空、什么都没有”的含义,其本质是0
•nullptr是C++11标准引入的关键字,表示指针为空

空指针,只在需要指针,但需要延迟赋值的场景下作为过渡使用。

空指针:将指针赋值为“空”:NULL、nullptr,避免指向具体内存,更加安全

空指针也不是正常的指针,只是过渡,指针最终要给与具体值,否则就不要用指针。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/743117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

会声会影2024永久激活码序列号注册机分享

大家好呀&#xff0c;今天我想给大家安利一款我最近超级喜欢的软件——会声会影2024&#xff01;&#x1f31f; 作为一个视频编辑爱好者&#xff0c;我尝试过很多视频编辑软件&#xff0c;但总感觉少了那么一点点“火花”。直到我遇到了会声会影2024&#xff0c;它完全改变了我…

如何解决远距离传输大文件慢的问题?

在数字化时代&#xff0c;无论是企业还是个人&#xff0c;经常需要处理跨越长距离的大规模文件传输任务。这种传输的效率和安全性对业务流程的顺畅至关重要。然而&#xff0c;我们经常遇到网络延迟、数据丢失、带宽限制等问题&#xff0c;这些都可能影响文件传输的效率。小编将…

Linux环境下安装MySQL5.7.20(源码安装)

&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;本专栏主要发表mysql实战的文章&#xff0c;文章主要包括&#xff1a; 各版本数据库的安装、备份和恢复,性能优化等内容的学习。。 &#x1f4e3; ***如果需要观看配套视频的小伙伴们&#xff0c;请…

vue+three.js渲染3D模型

安装three.js: npm install three 页面部分代码&#xff1a; <div style"width: 100%; height: 300px; position: relative;"><div style"height: 200px; background-color: white; width: 100%; position: absolute; top: 0;"><div id&…

大学网页制作作品1

作品须知&#xff1a;1.该网页作品预计分为5个页面&#xff08;其中1个登录页面&#xff0c;1个首页主页面&#xff0c;3个分页面&#xff09;&#xff0c;如需要可自行删改增加页面。&#xff08;总共约800行html,1200行css,100行js&#xff09; 2.此网页源代码只用于学习和模…

宣告 adsb.exposed - 基于 ClickHouse 的 ADS-B 航班数据交互式可视化和分析

本文字数&#xff1a;10340&#xff1b;估计阅读时间&#xff1a;26 分钟 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 Meetup活动 ClickHouse 上海首届 Meetup 讲师招募中&#xff0c;欢迎讲师在文末扫码报名&#xff01; 也许你已…

秒空!西圣Mike无线麦克风新晋断货王!引爆抢购潮,618全平台售罄

在数字音频技术飞速发展的今天&#xff0c;一款能够满足专业需求同时兼具高性价比的无线麦克风无疑是市场上的稀缺品。自西圣Mike无线麦克风上市以来&#xff0c;凭借其卓越的机皇性能和百元的亲民价格&#xff0c;迅速在消费者中引起轰动&#xff0c;连月斩获99%高好评&#x…

让我们聊聊网络安全中会涉及到的IP地址(IP协议)、MAC地址、路由、DNS协议(域名系统)、NAT技术(协议)、以太网帧、ARP协议

网络安全中会涉及到的IP地址&#xff08;IP协议&#xff09;、MAC地址、路由、DNS协议&#xff08;域名系统&#xff09;、NAT技术&#xff08;协议&#xff09;、以太网帧、ARP协议 一.IP地址&#xff08;IP协议&#xff09;1.IP地址&#xff08;IP协议&#xff09;的作用2.IP…

使用多用户增强服务器的安全性

Fedora CoreOS 操作系统 (简称 fcos) 的主要设计目标, 是大规模服务器集群 (几十台甚至数百台). 对于窝等穷人这种只有一台主机 (或者两三台) 的情况, 还是需要稍稍改造 (配置) 一下, 才能比较舒服的使用. 比如, 默认 SSH 登录使用 core 用户, 这个用户可以无需密码使用 sudo …

python根据excel的文件创建文件夹

这几天要整理一点文档&#xff0c;需要批量生成一些文件夹&#xff0c;&#xff08;其实也可以进一步自动生成各种文档&#xff09;&#xff0c;用到了py的功能&#xff0c;在此记录一下。 1.准备工作 需要两个库支持openpyxl和os 安装 pip install openpyxl2.代码思路 打算…

初识Java(二)

初识Java的main方法 1.1 main方法示例 public class world {public static void main(String[] args) {System.out.println("hello,world!");}}通过上述代码&#xff0c;我们可以看到一个完整的Java程序的结构&#xff0c;Java程序的结构由如下三个部分组成&#x…

攻击者开始使用 XLL 文件进行攻击

近期&#xff0c;研究人员发现使用恶意 Microsoft Excel 加载项&#xff08;XLL&#xff09;文件发起攻击的行动有所增加&#xff0c;这项技术的 MITRE ATT&CK 技术项编号为 T1137.006。 这些加载项都是为了使用户能够利用高性能函数&#xff0c;为 Excel 工作表提供 API …

VC++开发积累——vc++6.0中删除函数的方法,右键,Delete

目录 引出插曲&#xff1a;删除函数的方法多行注释的实现代码输入的自动提示搜索出来&#xff0c;标记和取消标记跳转到上一步的位置 ctrl TAB 总结其他规范和帮助文档创建第一个Qt程序对象树概念信号signal槽slot自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自…

数据处理技术影响皮质-皮质间诱发电位的量化

摘要 皮质-皮质间诱发电位(CCEPs)是探究颅内人体电生理学中有效连接性的常用工具。与所有人体电生理学数据一样&#xff0c;CCEP数据极易受到噪声的影响。为了解决噪声问题&#xff0c;通常会对CCEP数据进行滤波和重参考&#xff0c;但不同的研究会采用不同的处理策略。本研究…

Linux操作系统进程同步的几种方式及基本原理

1&#xff0c;进程同步的几种方式 1.1信号量 用于进程间传递信号的一个整数值。在信号量上只有三种操作可以进行&#xff1a;初始化&#xff0c;P操作和V操作&#xff0c;这三种操作都是原子操作。 P操作(递减操作)可以用于阻塞一个进程&#xff0c;V操作(增加操作)可以用于…

基于SpringBoot+Vue网上图书商城(带1w+文档)

基于SpringBootVue网上图书商城(带1w文档) 通过网上图书商城的研究可以更好地理解系统开发的意义&#xff0c;而且也有利于发展更多的智能系统&#xff0c;解决了人才的供给和需求的平衡问题&#xff0c;网上图书商城的开发建设&#xff0c;由于其开发周期短&#xff0c;维护方…

计算机网络课程实训:局域网方案设计与实现(基于ensp)

文章目录 前言基本要求操作分公司1分公司2总部核心交换机配置实现内部服务器的搭建acl_deny部分用户与服务器出口出口防火墙配置 前言 本篇文章是小编实训部分内容&#xff0c;内容可能会有错误&#xff0c;另外ensp对电脑兼容性及其挑剔&#xff0c;在使用之前一定要安装好。…

C++哈希表、哈希桶的实现以及模拟实现封装unordered_map 和 unordered_set 位图 布隆过滤器 哈希切割相关

文章目录 unordered系列关联式容器unordered_mapunordered_map的接口说明 unordered_setset 与 unordered_set的效率比较 底层结构哈希概念哈希冲突哈希函数常见哈希函数哈希冲突解决闭散列 —— 开放定址法哈希表的插入线性探测二次探测 哈希表的闭散列实现哈希表的结构插入代…

面试-synchronized(java5以前唯一)和ReentrantLock的区别

1.ReentrantLock&#xff08;再入锁&#xff09;&#xff1a; (1).在java.util.concurrent.locks包 (2).和CountDownLatch,FutureTask,Semaphore一样基于AQS实现。 AQS:AbstractQueuedSynchronizer 队列同步器。Java并发用来构建锁或其他同步主键的基础框架&#xff0c;是j.u.c…

运行时库链接方式实践指南(MT、MD、MTd、MDd)

前言 笔者曾经编译一个库提供给使用者&#xff0c;提供库后发现由于运行时库连接方式不一致&#xff0c;导致使用者无法连接笔者提供的库。另一方面&#xff0c;理解和选择正确的运行时链接方式对于构建高效、可靠的应用程序至关重要。 因此&#xff0c;本文将展开运行时库的基…