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

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*指向一串以00结尾的字符串
  • 所以字符指针就是字符数组,即char * == char []
//下面这样的赋值是可行的
char a[2] = "a";
char *b = a;
printf("first value is :%s", b);

char **argv == char *argv[]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容