1.6、struct和union

本文介绍了C语言中的结构体与联合体概念,包括空结构体的定义及其大小特性,柔性数组的使用方法,以及如何利用结构体创建柔性数组。此外,还探讨了联合体的工作原理及成员共享内存的特点,并提供了一个示例程序来检测系统的大端或小端特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在程序中可以定义一个空结构体


2、空结构体的大小和编译器有关


3、柔性数组即数组大小待定的数组


4、C语言中结构体的最后一个元素可以是大小未知的数组


5、C语言可以由结构体产生柔性数组
    struct soft{
        int len;
        int array[];

    }


6、 gcc编译时sizeof(struct soft) = 4, int array[]大小为0,只是一个占位符


7、struct中的每个域在内存中都会独立分配空间


8、union只分配最大域的空间,所有域共享这个空间


9、union的使用受系统大小端的影响


10、int checkSys()
       {
           union check
           {
                  int i;
                  char c;
           }cc;
           cc.i = 1;

            return cc.c == 1;
       }

       int main()
       {
            printf ("%d\n", checkSys() );
             return 0;

       }


11、10的程序可以测试系统的大小端(我的linux系统测出来是小端,因为结果是1)

      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值