美文网首页
c/c++结构体复习

c/c++结构体复习

作者: Hello_kid | 来源:发表于2020-10-15 14:24 被阅读0次

    typedef struct objc_class *Class
    typedef struct objc_object *id
    以上可知,在OC中,对象底层的表示是一个struct
    这篇文章带你复习下c/c++的struct。


    先上维基百科的一段解释

    C语言中,结构体(struct)指的是一种数据结构,是C语言中复合数据类型(aggregate data type)的一类。结构体可以被声明为变量指针数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
    参考链接

    总结来说 结构体是由一些基础数据类型构成一个复合类型;

    结构体声明方式

    // 第一种
    struct Stu {
      char name[16];
      int age;
    } xh,dy;
    struct Stu liming;
    

    可以在声明结构体的同时去声明一个或者多个结构体变量 xh,dy
    也可以单独使用去声明 如struct Stu liming;
    ⚠️注意 struct Stu是一个整体,是一个类型, 用来声明结构体变量;


    // 第二种 匿名结构体
    struct  {
      char name[16];
      int age;
    } noName;
    
    

    如果这个结构体变量只需要声明一次, 可以写成匿名结构体


    // 第三种 typedef 重新创建一个类型 
    typedef struct  {
      char *name;
      int age;
    } Person;
    Person p1, p2;
    
    struct Stu {
      char name[16];
      int age;
    } xh,dy;
    
    typedef struct Stu Student;
    

    使用typedef 重新命名类型, 方便实用;

    结构体赋值方式

    先简单定义个结构体

    typedef struct  {
      char name[16];
      int age;
    } Person;
    
    第一种
    Person p = {"liming", 25};
    

    初始化的时候同时赋值,⚠️ 注意顺序

    第二种
    Person p;
    p.age = 23;
    p.name = "liming";
    

    因为分开赋值, 顺序不顺序无所谓

    第三种
    Person p = {
      .age = 23,
      .name = "liming"
    };
    

    这种赋值方式更像前俩种的结合体,⚠️这种方式不能先声明 再赋值, 只能一次性一条语句完成
    ❌错误示范

    Person p;
    p = {
      .age = 23,
      .name = "liming"
    };
    

    上面这种是不对的;


    相关文章

      网友评论

          本文标题:c/c++结构体复习

          本文链接:https://www.haomeiwen.com/subject/eagnpktx.html