黑马程序员-C语言结构体使用的相关细节

来源:互联网 发布:学钢琴 软件 编辑:程序博客网 时间:2024/05/17 08:32
一、定义:  
       struct 结构体名{
          
         成员列表;
       
        }; //注意此处的分号不能省

结构体变量定义:
    1)先定义结构体,然后在定义结构体变量
        //注意:
      1)结构体定义完成以后,计算机并不会给结构体分配内存空间
      2)会在定义结构体变量后,分配存储空间
 
      //结构体变量定义格式:
      struct 结构体名 结构体变量名;
               
2)定义结构体的同时,定义结构体变量 
       格式:
       struct 结构体名{
                 成员列表;
       }结构体变量1,结构体变量2....;

3)使用匿名结构体定义结构体变量
        struct {
            成员列表;
        }结构体变量1,结构体变量2....;

二、结构体成员的访问
        方法:结构体变量名.成员变量
        注意:如果成员变量中有字符数组,则在对其进行初始化的时候,不能将一个字符串直接赋值给该
                    字符数组,而应该用strcpy函数对其进行赋值
       
        范例:
                    struct Student{
                        //学生学号
                        int sno;
                        //学生姓名
                        char name[21];
                        //学生年龄
                        int age;
                    };
                   
                     //先定义结构体变量,然后再初始化
                    struct Student stu1;  

                    //给结构体变变量初始化
                    stu1.sno = 38;
                    stu1.age = 18;
                    stu1.name="张三丰";//该语句报错,因为name是数组名称,是一个常量,不能对其赋值
                    //应该采用如下方法对其赋值
                    strcpy(stu1.name, "张三丰");

                     //定义结构体的同时,还可以指定元素的部分初始化
                    struct Student stu2={.name = "lady Gaga"};
三、结构体指针
     
  定义:指向结构体变量的指针
        使用结构体指针访问结构体变量的成员有两种方式:
            1)*结构体指针变量名.成员名
            2)结构体变量指针->成员名
               范例:     
                 struct Student{
                        //学生姓名
                        char name[21];
                        //学生年龄
                        int age;
                    }stu1={"zhangsan",18},*p=NULL;
                    p = &stu1;
                    printf("%s",p->name);
                    printf("%d",*p.age);
                    //注意:只有结构体指针才能使用p->name这种方式访问成员,不能直接使用结构体变量
                                名这样访问
四、结构体嵌套
        定义:一个结构体变量是另一个结构体定义时候的成员
        注意:1)定义结构体时不能嵌套自己的结构体变量
                   2)可以嵌套自己的结构体指针变量


                 
0 0