黑马程序员技术交流社区

标题: C语言结构体使用注意事项 [打印本页]

作者: flywithde    时间: 2015-8-1 17:21
标题: C语言结构体使用注意事项
一、定义:  
       struct 结构体名{
         
         成员列表;
      
        }; //注意此处的分号不能省

结构体变量定义:
    1)先定义结构体,然后在定义结构体变量
        //注意:
      1)结构体定义完成以后,计算机并不会给结构体分配内存空间
      2)会在定义结构体变量后,分配存储空间

      //结构体变量定义格式:
      struct 结构体名 结构体变量名;
               
2)定义结构体的同时,定义结构体变量
       格式:
       struct 结构体名{
                 成员列表;
       }结构体变量1,结构体变量2....;

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

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

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

                     //定义结构体的同时,还可以指定元素的部分初始化
                    struct Student stu2={.name = "lady Gaga"};
                    //若结构体变量在定义的时候没有进行初始化,在定义后对其初始化的时候不能直接用大括
                        号对其赋值,若非要用,则必须将其强制转换成该结构体变量类型在赋值给结构体变量
                    stu3 = {12345,"张三丰",18};//这条语句会报错,不能这样为结构体赋值
                    //应该用下面的格式为结构体变量赋值
                    stu3 = (struct Student){12345,"张三丰",18};
三、结构体指针
     
  定义:指向结构体变量的指针
        使用结构体指针访问结构体变量的成员有两种方式:
            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)可以嵌套自己的结构体指针变量


                  
作者: flywithde    时间: 2015-8-1 17:32
收藏着以后忘了再拿出来看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2