You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:23:12