成员变量访问

关于c语言结构体成员变量访问方式的一点思考

二次信任 提交于 2019-11-28 14:37:55
前言 上篇博文( 关于c语言结构体偏移的一点思考 )对c语言中结构体偏移做了一些思考,发现博文中还有一些小的问题,没有描述的足够清楚,所以才萌生了本篇博文的想法。 为什么不直接将本篇博文作为上篇博文的一个“注”呢?主要有以下方面的原因,一是使用一篇独立的博文能够更好的阐述问题,从而彻底的理解它;二是上篇博文的篇幅已经比较长,考虑到读者的耐心,所以一篇博文不适合过长的篇幅;三是这个问题可以作为一个独立的主题来探讨,方便查阅;最后本着单一职责的原则,每篇博文讨论一个特定的主题,对于主题的粒度大小,可酌情考虑。 那么本篇博文主要探讨什么问题呢?从本文的标题我们可以看到,本文主要探讨的是c语言中关于结构体成员变量的访问方式。访问结构体成员变量?如此简单的问题,有什么可以思考的呢?很纳闷也很奇怪。既然这样,那就带着这个奇怪的问题继续阅读吧。 示例 我们的探讨还是从一个简单的示例开始: 已知结构体类型定义如下: struct node_t { char a; int b; int c; }; 且结构体1Byte对齐: #pragma pack(1) 接下来我们探讨几种访问该结构体成员变量c的方式: 情形1 如果程序中定义了一个struct node_t类型的变量node如下: struct node_t node; 那么我们就可以直接通过下面的方式来访问成员变量c: node.c 情形2