C语言的一些符号含义、 函数含义

2019-05-25  本文已影响0人  勤学奋进小郎君

union:共用体/联合体

union 共用体名{
成员列表
};

类似结构体,是一群变量的集合,和集合不同的是:

  1. 共用体分配空间时,是依据内部变量中最大变量的大小分配的。
    如下,double最大,需要8byte,所以分配8字节空间
union data{
    int n;
    char ch;
    double f;
};
  1. 实际上,共用体只分配空间,不管空间内的任何操作
    如下:根据共用体内部变量分配好空间大小,甚至可以写入未定义的变量类型
union var1{
        int a;
        double b;
};

int main()
{
        union var1 uu;
        uu.a=1;
        char* p1;
        p1  = &uu;
        p1[0] = 'a';
        p1[1] = 'b';
        p1[2] = '\0';
        printf("%s", &uu);
        return 0;
}

attribute :设置特殊属性

attribute可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)

union + attribute ((transparent_union)): 透明联合

这里其实也可以是 attribute ((transparent_union)),说是为了防止重名

透明联合相关介绍:https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Type-Attributes.html#Type-Attributes

##的作用:连接符

字符数组,字符指针

//下面这样的赋值是可行的
char a[2] = "a";
char *b = a;
printf("first value is :%s", b);

char **argv == char *argv[]

上一篇 下一篇

猜你喜欢

热点阅读