网站开发使用的语言有哪些,小程序外包公司发展前景,东莞专业网站推广多少钱,钱客多代理网页结构体和共用体的区别在于#xff1a;结构体的各个成员会占用不同的内存#xff0c;互相之间没有影响#xff1b;而共用体的所有成员占用同一段内存#xff0c;修改一个成员会影响其余所有成员。 结构体占用的内存大于等于所有成员占用的内存的总和#xff08;成员之间可能… 结构体和共用体的区别在于结构体的各个成员会占用不同的内存互相之间没有影响而共用体的所有成员占用同一段内存修改一个成员会影响其余所有成员。 结构体占用的内存大于等于所有成员占用的内存的总和成员之间可能会存在缝隙共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术同一时刻只能保存一个成员的值如果对新的成员赋值就会把原来成员的值覆盖掉。 经典示例
#include stdio.h
union un
{int i;char c[2];
};
int main()
{union un x;x.c[0]10;x.c[1]1;printf(\n%d,x.i);return 0;} 在这个程序中我们定义了一个联合unionun它包含一个整数i和一个字符数组c这个字符数组有两个元素。 在main函数中我们创建了一个un类型的变量x并将x.c[0]赋值为10x.c[1]赋值为1。然后我们打印x.i的值。 在这里我们需要知道的是联合中的所有成员共享同一块内存。也就是说x.i和x.c共享同一块内存。 现在我们来看为什么输出结果是266。在这个程序中我们假设使用的是小端存储方式。在小端存储中对于一个多字节的数据它的低位字节存储在低地址处高位字节存储在高地址处。 因此当我们将x.c[0]赋值为10二进制表示为00001010x.c[1]赋值为1二进制表示为00000001时这两个字节被存储在内存中的顺序是0000000100001010。 这个二进制数转换成十进制是266。因此当我们打印x.i的值时输出结果为266。