指针深度剖析——深入浅出解读悬空指针和指向指针,告诉你为什么不能没有指针

本文深入探讨了指针的概念,包括指向指针的指针、悬空指针的危害以及指针在编程中的重要性。通过多个案例解释了没有指针就无法实现的功能,揭示了指针的强大之处,同时提醒开发者注意指针可能导致的问题,如堆栈溢出和悬空指针。此外,文章还强调了指针在处理大量数据、异步执行参数等方面的优势。
摘要由CSDN通过智能技术生成

目录

  • 介绍
  • 背景
  • 什么是指针?
  • 什么是指向指针的指针?
  • 悬空指针
  • 指针从哪里开始?
  • 局部变量和指针之间的差异
  • 那么什么时候没有指针就不可能实现?
  • 但是,有那么多神奇的智能指针!
  • 什么是调用堆栈和堆栈溢出..
  • 不能没有指针-案例1
  • 不能没有指针-案例2
  • 不能没有指针-案例3
  • 不能没有指针-案例4
  • 不能没有指针-案例5
  • 不能没有指针-案例6
  • 为什么指针如此强大
  • 对象指针和功能指针之间的区别
  • 按值传递参数
  • 通过引用传递参数
  • 兴趣点

介绍

指针是很多初学者的生死大敌,堪称c++的嘉峪关,在本文中,我将尝试阐明有关指针及其用法的某些要点, 希望对正在学习的你有所帮助。

背景

有时,在Web上,我会进行无数次有关C或C ++等语言的指针的讨论,关于使用指针是否值得甚至是明智的争论不断。 这个问题似乎一直持续到今天。 因此,希望澄清一些事情,我决定创建这篇文章。 我不会对这个问题过于熟练,也不会虔诚地要求每个人 new必须具有相应的 delete或每个人 malloc必须具有相应的 free

本文适用于C和C ++,您除了处理原始指针外别无选择。 其他语言(例如Java,C#等)将所有的伏都教魔术隐藏在幕后。 它也适合那些不使用ASM,C或C ++编写代码但被主题迷惑的初学者。

我将尝试涵盖所有情况,而不会太深入技术细节。 如果您希望对指针有非常深入的技术知识,那么从Wikipedia到众多博客都可以找到很多信息。 cplusplus dot com网站上有一篇很棒的关于指针的文章,因此在这里我不再重复。 鉴于您正在使用C或C ++进行开发,因此我将在以下场景中进行介绍:

  • 什么时候不使用指针就不可能实现某些东西
  • 使用指针的优点
  • 通过值,引用或指针传递变量
  • 悬空指针

什么是指针?

指针是一个整数变量保持在所述特定的宽度(一个地址 floatdoubleintstructclass,等等)值被存储在计算机存储器中。 因此,指针是计算机在金属层上本机可以理解的“事实”对象。 指针始终是宽度为8、16、32、64、128等位的无符号整数。 这在很大程度上取决于CPU的主寄存器宽度。 它也由操作系统运行时位对齐指示。 完全有可能在64位CPU上运行16位OS,但反之亦然。 但是,在16位OS中,即使CPU为64位宽,您也将被限制在16位地址空间中。

旁记:由于64位寄存器的宽度足以满足上述16位OS的需要,因此可以编写一个特殊的分段内存管理器,该管理器可以窥视超过64Kb的限制,但前提是物理寄存器必须足够宽(哦,旧的16位Windows) )。 16位内存段和偏移量的主题在今天已经过时了。 在当前的讨论中,我仅针对平面内存。

指针的宽度与该指针可以容纳的可寻址内存直接相关,并且其宽度的乘幂为2减1。

通过查看此表,您可以看到过去和将来。

如果您要在sifi小说领域中醒来,首先要检查的是它们使用的计算机上的可寻址指针存储器,以了解您要处理的内容 。

当今的64位处理器中确实存在128位寄存器,通常用于SIMD(单指令多数据)操作码。 长话短说–它们允许并排加载四个32位整数到同一个寄存器中,并在一个CPU周期(赫兹)中执行多个指令,例如MulDiv等。 值得一看:1 EB等于一百万TB。

好。 那么什么是指向指针的指针?

指向指针的指针是一个整数变量,它保存

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值