C语言中指针类型与指针大小的疑惑求解
关于指针类型与sizeof结果的疑问
我已经花了不少时间理解这个问题,也搜过相关疑问,找到的部分答案有一定道理,但还是需要明确的解释。目前我在学习一款产品的固件,其中一组指针被声明为uint8_t类型,示例代码如下:
uint8_t *pwhatevs;
我原本以为这个指针的sizeof会返回1(1字节)。之后在固件里,这个指针被赋值指向一个32位地址,代码如下:
pwhatevs = (uint8_t *)&whatever;
这种语法让我困惑:(uint8_t *)是8位指针类型转换,但此时sizeof pwhatevs返回4(4字节),这既在意料之外又在情理之中,能不能有人解释其中原因?如果需要更多信息我会尽可能提供!
补充1
在另一篇关于指针大小的问题里提到,指针大小取决于系统,比如16、32或64位,这点我能理解,但为什么声明时*pwhatevs的大小不是4字节?
补充2
因为是产品代码,我无法分享全部内容,我会通过以下截图展示,如果不够充分我会准备特定示例:

内容的提问来源于stack exchange,提问作者TheLostProgrammer
相关产品推荐
相关产品推荐

