加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

我们可以联合使用指针吗?

发布时间:2020-12-16 06:01:05 所属栏目:百科 来源:网络整理
导读:如果没有为甚么?结合使用结构? 解决方法 您可以使用联合中的任何数据类型,没有限制. 关于联合体在结构上的使用,结构在记忆中顺序排列数据.这意味着所有的子组件都是分开的. 另一方面,联盟对其所有子组件使用相同的内存,因此一次只能存在一个. 例如: +----
如果没有为甚么?结合使用结构?

解决方法

您可以使用联合中的任何数据类型,没有限制.

关于联合体在结构上的使用,结构在记忆中顺序排列数据.这意味着所有的子组件都是分开的.

另一方面,联盟对其所有子组件使用相同的内存,因此一次只能存在一个.

例如:

+-----+-----+
struct { int a; float b }  gives |  a  |  b  |
                                 +-----+-----+
                                    ^     ^
                                    |     |
                 memory location:  150   154
                                    |
                                    V
                                 +-----+
union { int a; float b }  gives  |  a  |
                                 |  b  |
                                 +-----+

结构用于“对象”由其他对象组成,如由两个整数组成的点对象,即x和y坐标:

typedef struct {
    int x;           // x and y are separate
    int y;
} tPoint;

通常,在对象可以是许多事物之一但一次只能使用一个对象的情况下使用工会,例如无类型的存储系统:

typedef enum { STR,INT } tType;
typedef struct {
    tType typ;          // typ is separate.
    union {
        int ival;       // ival and sval occupy same memory.
        char *sval;
    }
} tVal;

它们对于节省内存是有用的,尽管现在越来越少的关注(除了在嵌入式系统的低级工作之外),所以你看不到很多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读