zoukankan      html  css  js  c++  java
  • C语言基础--结构体

    位域:

     1 struct 位域结构名
     2 { 位域列表 };
     3 
     4 比如
     5 
     6 struct pack
     7 {
     8    unsigned a:2;
     9    unsigned b:8;
    10    unsigned c:6;        
    11 }pk1, pk2;
    12 
    13 结构变量pk1或者pk2的3个成员将总共占用16位存储,其中a占用2位,b占用8位,c占用6位。

    注:C语言中unsigned即表示unsigned int.

    但是, 一个位域必须存储在同一个字节中,不能跨2个字节,当1个字节所剩空间不够存放另一个位域时,应从下一单元存入该位域。也可以有意使某位域从下一单元开始。例如:

     1 struct bs
     2 
     3 {
     4 
     5   unsigned a:4;
     6 
     7   unsigned  :0;   /*空域*/
     8 
     9   unsigned b:4;  /*从下一单元开始存放*/
    10 
    11   unsinged c:4;
    12 
    13 }

    结构体内部成员的对齐

      在计算结构体长度,尤其是用sizeof运算符时,需要注意根据不同的编译器和处理器,结构体内部的成员有不再的对齐方式,这会引起结构体长度的不确定性。

     1 #include<stdio.h>
     2 struct a
     3 { 
     4     char a1;
     5     char a2;
     6     char a3;
     7 }A;
     8 
     9 struct b
    10 {
    11     short a2;
    12     char a1;
    13 }B;
    14 
    15 int main()
    16 {
    17     printf( "sizeof(char) = %ld, sizeof(short) = %ld, sizeof(A) = %ld, sizeof(B) = %ld
    ",
    18         sizeof(char), sizeof(short), sizeof(A), sizeof(B) );
    19         
    20     return 0;
    21 }

    在Trubo C中结果为:

    1,2, 3,3

  • 相关阅读:
    kettle plugin 插件开发
    eclipse插件hibernate tools安装
    全面总结Java泛型 使用案例
    向刚工作的人解释什么叫工作!
    Hibernate 的HQL,QBC 查询语言
    JQuery Highcharts图表控件使用说明
    JSP 的脚本,指令,动作
    ODI OWB 特性比较说明
    Win32 框架文档视图(3)
    Win32 框架文档视图(2)
  • 原文地址:https://www.cnblogs.com/merlindu/p/6417433.html
Copyright © 2011-2022 走看看