目录
- 介绍
- 背景
- 什么是指针?
- 什么是指向指针的指针?
- 悬空指针
- 指针从哪里开始?
- 局部变量和指针之间的差异
- 那么什么时候没有指针就不可能实现?
- 但是,有那么多神奇的智能指针!
- 什么是调用堆栈和堆栈溢出..
- 不能没有指针-案例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 ++进行开发,因此我将在以下场景中进行介绍:
- 什么时候不使用指针就不可能实现某些东西
- 使用指针的优点
- 通过值,引用或指针传递变量
- 悬空指针
什么是指针?
指针是一个整数变量保持在所述特定的宽度(一个地址 float, double, int, struct, class,等等)值被存储在计算机存储器中。 因此,指针是计算机在金属层上本机可以理解的“事实”对象。 指针始终是宽度为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。
好。 那么什么是指向指针的指针?
指向指针的指针是一个整数变量,它保存指针的地址。 它通常用作函数的返回值。 它

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

被折叠的 条评论
为什么被折叠?



