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

    结构体的定义

    “结构”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或

    结构体的定义方式:

    #include <stdio.h>
    
    #define com struct Computer
    
    int main(int argc, const char * argv[]) {
    
            //第一种方法定义结构体变量
    
        struct Student//结构体名称一般大写
    
        {
    
            int age;
    
            char name[20];
    
            char sex;
    
            float score;
    
        };
    
        struct Student stu1;
    
       //第二种方法
    
        
    
        struct Cars
    
        {
    
            int speed;
    
            char pinpai[20];
    
            float weight;       
    
        }benchi;//直接在定义结构体的同时定义结构体变量
    
        //第三种方法
    
        struct//定义匿名结构体
    
        {
    
            int pages;
    
            char *name;
    
        }sanguoyanyi;
    
        //用宏定义
    
        struct Computer
    
        {
    
            char *pinpai;
    
            int yingpan;
    
        };
    
        com lianxiang;
    
        return 0;
    
    }
    View Code

    结构体单个成员初始化

    #include <stdio.h>
    #include <string.h>
    int main(int argc, const char * argv[]) {
        
        struct Student//定义一个结构体
        {
            int age;
            char name[20];
            float score;
        };
        
        struct Student stu1;//定义一个结构体变量
        stu1.age=23;
        //stu1.name="陈擎霄";//这样赋值是错误的,因为stu1.name 是数组名,不能直接赋值
        
        strcpy(stu1.name, "陈擎霄");
        //通过这个函数赋值,首先得引入头文件,string.h.这个函数的
        //作用是把后面的字符赋值给前面的指针(数组名)
        
        
        printf("%s",stu1.name);
        
        
        struct Student cqx={.name="陈擎霄"};//可以通过.name这种方式赋值
        printf("%s",cqx.name);
        
        return 0;
    }
    View Code

    结构体全部初始化 

    #include <stdio.h>
    
    
    
    int main(int argc, const char * argv[]) {
    
        
    
        //1.先定义结构体,再初始化
    
        
    
        struct Student//定义一个结构体
    
        {
    
            int age;
    
            char name[20];
    
            float score;
    
        };
    
        
    
        struct Student stu1;
    
        stu1=(struct Student){23,"陈擎霄",99};//需要强制转换成struct Students
    
        
    
        
    
        //2.定义结构体的同时进行初始化
    
        struct Cars
    
        {
    
            int speed;
    
            char pinpai[20];
    
            float weight;
    
            
    
        }benchi={300,"奔驰",2000.0};
    
        
    
        struct Cars baoma={290,"宝马",1900.0};//3.定义结构体变量的同时进行初始化
    
        
    
        struct Cars aodi=baoma;//通过已经初始化的结构体变量赋值给另一个变量,这是值传递
    
        
    
        printf("1车的品牌是%s,最大速度是%d,重量是%.2f
    ",benchi.pinpai,benchi.speed,benchi.weight);
    
        printf("2车的品牌是%s,最大速度是%d,重量是%.2f
    ",baoma.pinpai,baoma.speed,baoma.weight);
    
        printf("3车的品牌是%s,最大速度是%d,重量是%.2f
    ",aodi.pinpai,aodi.speed,aodi.weight);
    
        
    
        return 0;
    
    }
    View Code

    结构体存储原理

    结构体所占的额内存空间是每个成员占用的字节数之和(但是要考虑对齐问题)

    对齐模数:结构体里变量数据类型所占最大的空间数

        struct Student//定义一个结构体
    
        {
    
            int age;
    
            char name[20];
    
            float score;
    
        };
    View Code

    这个结构体的模数就是float所占字节数,即为8,整个结构体所占空间为,16

  • 相关阅读:
    网络流24题
    可持久化Treap
    后缀平衡树
    bzoj2561-最小生成树
    poj3164-Command Network
    最小树形图
    hdu2121-Ice_cream’s world II
    线性处理逆元
    bzoj3992-序列统计
    JavaScript 类型转换
  • 原文地址:https://www.cnblogs.com/chenqingxiao/p/4363515.html
Copyright © 2011-2022 走看看