zoukankan      html  css  js  c++  java
  • 0039 结构体

    /*
     
        结构体变量有定义有三种方法
     
        1)先定义结构体,然后在定义结构体变量
     
          struct Student{
            
             //学生学号
             int sno;
             //学生姓名
             char name[21];
             //学生年龄
             int age;
             //学生成绩
             float score;
     
          };
     
          //注意:
          1)结构体定义完成以后,计算机并不会给结构体分配内存空间
          2)会在定义结构体变量后,分配存储空间
      
          //结构体变量定义格式:
          struct 结构体名 结构体变量名;
     
          struct Student stu1;  //这句话表示定义一个Student结构体类型的变量,变量的名称是stu1;
          //stu1因为是Student类型,stu1可以存放学生的学号、姓名、年龄、成绩
     
     
          struct Student stu4,stu2,stu3;  //定义多个结构体变量
     
     
        2)定义结构体的同时,定义结构体变量
     
           格式:
     
           struct 结构体名{
     
     
           }结构体变量1,结构体变量2....;
     
     
     
             struct Student{
             
                 //学生学号
                 int sno;
                 //学生姓名
                 char name[21];
                 //学生年龄
                 int age;
                 //学生成绩
                 float score;
             
             }stu5,stu6,stu7; //也是用Student结构体定义了三个结构体变量
             //名称分别为 stu5,stu6,stu7
             
     
     
        3)使用匿名结构体定义结构体变量
     
            struct {
     
     
     
            }结构体变量1,结构体变量2....;
     
            struct {
     
               char *color;
               int lunzi;
               int speed;
     
            }car1,car2,car3;
     
     
     
     
     */
    
    
    #include <stdio.h>
    struct Student{
        
        //学生学号
        int sno;
        //学生姓名
        char name[21];
        //学生年龄
        int age;
        //学生成绩
        float score;
        
    };
    
    int main(int argc, const char * argv[]) {
        
        //第一种方法
        struct Student stu1;  //这句话表示定义一个Student结构体类型的变量,变量的名称是stu1;
        
        //第二种,定义结构体的同时,定义结构体变量
        struct Student{
            
            //学生学号
            int sno;
            //学生姓名
            char name[21];
            //学生年龄
            int age;
            //学生成绩
            float score;
            
        }stu5,stu6,stu7; //也是用Student结构体定义了三个结构体变量
        //名称分别为 stu5,stu6,stu7
    
        struct {
            
            char *color;
            int lunzi;
            int speed;
            
        }car1,car2,car3;
        
        return 0;
    }
    
    //
    //  main.c
    //  15-结构体变量中成员的访问方法
    //
    //  Created by apple on 15/1/9.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        
        //定义一个Car类型的结构体
        struct Car{
        
            char *pp;
            int lunzi;
            int speed;
        
        };
        
        //用结构体类型,定义结构体变量
        struct Car car1;
        /*
          car1
         
          pp   "奥拓"
          lunzi  4
          speed 350
         
          car2
          pp   "时风"
          lunzi  3
          speed  180
         */
        
        //获取结构体变量中的成员
        // 获取品牌   car1.pp
        // 获取轮子   car1.lunzi
        // 获取速度   car1.speed
        
        //访问时风  car2.pp
        
        return 0;
    }
    
    //
    //  main.c
    //  16-结构体变量的初始化
    //
    //  Created by apple on 15/1/9.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, const char * argv[]) {
        
        struct Student{
            
            //学生学号
            int sno;
            //学生姓名
            char name[21];
            //学生年龄
            int age;
            //学生成绩
            float score;
            
        };
        
        //先定义结构体变量,然后再初始化
        struct Student stu1;  //占用字节数?
        
        //给结构体变变量初始化
        stu1.sno = 38;
        stu1.age = 18;
        stu1.score = 59.99f;
        char name1[21]="张三丰";
        //name1 = "张无忌";
        strcpy(stu1.name, "张三丰a");
        
        printf("学号:%d
    年龄:%d
    分数:%.2f
    姓名:%s
    ",stu1.sno,stu1.age,stu1.score,stu1.name);
        //1、stu1.name 占用多个字节   21
        printf("stu1.name %ld
    ",sizeof(stu1.name));
        //2、stu1.name 字符串长度是多少
        //汉字的编码问题
        // UTF-8  xcode中默认的中文的编码是utf-8格式
        //        国际通用编码 一个汉字占用 3个字节
        // GB2312 GBK  国标 一个汉字占用2个字节
        printf("stu1.name 长度:%ld
    ",strlen(stu1.name));
        
        //stu1.name = "zbz";  //
        
        
        //2、定义结构体变量的同时,进行初始化
        //初始化值得顺序要和定义结构体的顺序一致
        struct Student stu2={8,"凤姐",18,49.99f};
        printf("
    
    学号:%d
    年龄:%d
    分数:%.2f
    姓名:%s
    ",stu2.sno,stu2.age,stu2.score,stu2.name);
        
        //3、定义结构体的同时,还可以指定元素的初始化
        struct Student stu3={.name = "lady Gaga"};
        return 0;
    }
    
    //
    //  main.c
    //  18、结构体变量占用存储空间大小
    //
    //  Created by apple on 15/1/9.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        
        //计算结构体变量在内存中占用的字节数的方法
        //1)先找对齐模数
        //  对齐模数 是结构体中的基本数据类型中占用字节数最大的那个
        //          4
        //2)在计算结构体变量的中各个成员占用的字节和
        
        struct A{
        
            char ch[13];
            char ch1[11];
            int a;
       
        };
        //定义结构体变量
        struct A a1;
        printf("%ld
    ",sizeof(a1));
        
        return 0;
    }
    
    //
    //  main.c
    //  19-结构体作用域
    //
    //  Created by apple on 15/1/9.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    
    //定义一个全局的结构体
    struct Person{
    
        int age;
        char *name;
    
    };
    
    int main(int argc, const char * argv[]) {
        
        //定义结构体变量
        struct Person p1={18,"胡一刀"};
        //此处是可以的
        char *str ="aa";
        str="bbb";
        p1.name = "苗人凤";
        
        printf("age = %d
    name = %s
    ",p1.age,p1.name);
        
    
        {
            //定义一个结构体
            //定义局部的结构体,这个结构体和全局的结构体同名
            struct Person{
            
                int age;
            
            };
        
            
        }
        //此处定义的p2 是局部结构体Person的类型
        struct Person p2;
        p2.name = "户外i";
        
        
        return 0;
    }
    
  • 相关阅读:
    STM32 IAP程序 源码 和测试代码 有详细的中文注释
    mysql读写分离配置,利用mybatis实现,解释为什么dynamicDataSource不行
    mysql主从复制的配置总结
    Chapter 2 Open Book——7
    leetcode415---字符串大数相加
    Chapter 2 Open Book——6
    leetcode83,删除有序链表中的重复元素
    Chapter 2 Open Book——5
    Chapter 2 Open Book——4
    leetcode24,交换链表相邻的节点
  • 原文地址:https://www.cnblogs.com/aiti/p/4678258.html
Copyright © 2011-2022 走看看