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

前端之家收集整理的这篇文章主要介绍了我们可以联合使用指针吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果没有为甚么?结合使用结构?

解决方法

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

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

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

例如:

+-----+-----+
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;

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

原文链接:/c/113056.html

猜你在找的C&C++相关文章