前言:
今天小伙伴们对“c语言中的联合体”都比较看重,你们都想要了解一些“c语言中的联合体”的相关内容。那么小编同时在网络上网罗了一些有关“c语言中的联合体””的相关资讯,希望同学们能喜欢,小伙伴们一起来了解一下吧!结构体
结构和联合是非常重要的数据类型,被大量的适用于 WIN32 的 API 和 Linux 的 libc 中。 一个结构变量就是一组简单变量的集合 (所有变量都占用空间)
这是c语言中的结构体,如下代码所示
struct test{ int amt_barley; int amt_water;};
而在ctypes中创建一个类继承ctypes中的Structure
class test(Structure): _fields_ = [ ("a", c_int), ("b", c_int), ]
下图为python中结构体及使用
也可以如下图所示,创建变量的时候不传值,结构体中变量默认为0,然后通过打点调用的方式赋值就可以改变值
ctypes 很简单的就创建了一个 C 兼容的结构。
联合体
联合和结构很像。但是联合中所有变量同处一个内存地址,只占用一个变量的内存空间,这个空间的大小就是最大的类型的大小。这样就能够将联合作为不同类型的变量操作访问了。
c语言中声明联合体。
union { long a; int b; char c[8];}test;
下图为ctypes中的联合体及使用
若给其中一个赋值,则其他两个也会发生改变,因为开始地址是一样的
给联合赋一个值就能得到三种不同的表现方式。最后一个i.c 输出的结果是 B, 因为 66 刚好是 B 的 ASCII 码。
联合体中的c成员同时也是个数组,一个八个字符大小的数组。在 ctypes 中申请一个数组, 只要简单的将变量类型乘以想要申请的数量就可以了。在联合体里公用一段内存。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #c语言中的联合体