C/C++指针种类+常见错误+组合技巧,挑战写出全网最全指针文章
C/C++指针种类+常见错误+组合技巧,挑战写出全网最全指针文章
学习C/C++时,常常会遇到一个很烦人的东西:指针,说实话,指针在很多人入门C/C++时都是属于噩梦级的,它牵涉了庞大的知识体系,容易出现各种未定义行为,因此被称为C/C++中的最难知识点,那么这篇文章,就让我们好好聊一聊,这个BOSS级的指针。
一.汇编层面的指针理解
我们都知道,程序运行是依赖CPU的,CPU将可执行程序的指令一步步地执行,呈现出我们看到的各种运行效果,但,在程序的运行中,变量是必要的,因此CPU中设计了一些暂存数据的元件,这些元件就叫做寄存器
寄存器对于汇编程序,可以理解为变量,比如这样:
MOV EAX,0x0d00 ; 效果近似于"EAX=0x0d00"
MOV EBX,EAX ; 类似于"EBX=EAX"但是寄存器的问题很明显,为了足够快,寄存器往往造起来非常的昂贵,再加上各种限制,导致寄存器的数目非常的少,截止到本文书写的2025年9月7日,最新的x86_64架构CPU也只是提供了16个64位通用寄存器(硬算的话倒是还有800个不是通用寄存器的寄存器,不过不是不可见就是会影响CPU的行为),算下来也就$16*(64/8)=128$字节的数据,
Last updated on
