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

一、定义:  
       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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值