结构体内部偏移问题

结构体内部偏移问题

typedef struct shm_fifo{
    shm_head_t *p_head; //指向共享内存 head 区域
    char *p_payload;// 指向共享内存 data 区域
}shm_fifo_t;

图片描述
对于上述结构体变量偏移从p_head+1偏移到p_payload。是因为二者都是指针,才可以这样便宜吧,如果结构体内部数据类型不一,是不是就不可以这样偏移?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答
能不能偏移是根据项目需要,C语言下并不会进行严格的类型检查,所以类型不一样也是可以偏移赋值的,因为所有的指针、变量、常量都是数值,都可以混在一起运算,至于运算出来的结果是否有意义就要看实际情况。
  • 我想跑路 提问者 #1

    那如果上述结构体第二个成员并非指针,p_head+1是不是就没有意义了?

    2022-12-11 16:49:41
  • 嗯,可以这么理解。

    2022-12-11 18:03:15
  • 老师,这里的偏移该怎么理解?原先指针的指向的地址自增1,然后给到了payload指针?

    2023-03-21 12:16:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师