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

    #include <stdio.h>

    void structOne()

    {

        //定义一个名为Student的结构体类型

        struct Student {

            int age;        //年龄

            float score;    //成绩

            char *name;     //名字

        };

        

        //定义结构体变量

        struct Student stu={21,99.0,"Tom"};

        //stu={22,88.0,"Jack"};---错误方法

        

        printf("tom age is %d,score is %.2f,name is %s",stu.age,stu.score,stu.name);

        

        struct Teacher {

            int age;        //年龄

            float height;    //身高

            char *name;     //名字

        }tea1={33,180.2f,"Teacher Li"};

        tea1.height=170.1;//结构体变量的某个结构成员重赋值

        printf(" teacher age is %d,height is %g,name is %s",tea1.age,tea1.height,tea1.name);

    }

     

    void structTwo()

    {

        //声明一个匿名的结构体

        struct {

            int age;

            char *name;

        }stu1={22,"Jack"},stu2=stu1;//声明结构体变量的时候,可以定义多个

        printf("匿名结构体1age:%d,name:%s ",stu1.age,stu1.name);

        printf("匿名结构体2age:%d,name:%s ",stu2.age,stu2.name);

    }

     

    #pragma mark 2 结构体嵌套调用

     

    void structThree()

    {

        //结构体的递归(错误)

    //    struct Student {

    //        int age;

    //        char *name;

    //        struct Student stu1;

    //    };

        

        //结构体的嵌套

        struct Birthday{

            int year;

            int month;

            int day;

        };

        struct Student {

            int age;

            char *name;

            struct Birthday bir1;

        };

        struct Student stu1={21,"Jack",{1991,10,10}};

        printf("age=%d,name=%s,birthday:%d-%d-%d",stu1.age,stu1.name,stu1.bir1.year,stu1.bir1.month,stu1.bir1.day);

    }

    #pragma mark 3 结构体封装视图的坐标

     

    void structFrame()

    {

        struct CGPoint{//位置

            float x;

            float y;

        };

        struct CGSize{//尺寸

            double wigth;

            double hight;

        };

        struct CGFrame{//坐标(包含位置、尺寸)

            struct CGPoint point;

            struct CGSize size;

        };

        

        struct View{

            char *color;

            struct CGFrame frame;

        };

        

        struct View view1={"redColor",{100,50,120,60}};

        printf("view color is %s,view.x:%f,view.y:%f,view.w:%lf,view.h:%lf",view1.color,view1.frame.point.x,view1.frame.point.y,view1.frame.size.wigth,view1.frame.size.hight);

    }

    #pragma mark 4 结构体数组

     

    void structFour()

    {

        struct Student {

            int age;

            char *name;

        }stu[2]={{23,"Tom"},{21,"Jack"}};

        //struct Student man[3]={};

        struct Student stu1=stu[0];

        printf("数组中第一个学生:age=%d,name=%s",stu1.age,stu1.name);

    }

     

    #pragma mark 5 结构体作为函数的参数

    struct Person{

        int age;

    };

    void change(struct Person p){

        printf("参数传递:%d",p.age);

    }

    void structFive()

    {

        struct Person person={24};

        change(person);

    }

    #pragma mark 6 指向结构体的指针

    void structSix()

    {

        struct Person per1={33};

        struct Person *per2;

        

        per2 = &per1;

        

        printf("%d ",per1.age);

        printf("%d ",(*per2).age);

        printf("%d",per2->age);

    }

    int main(int argc, const char * argv[]) {

       

        structSix();

     

        return 0;

    }

  • 相关阅读:
    设置matplotlib.pyplot设置画图的坐标系
    [leetcode]238. 除自身以外数组的乘积
    彩色图到灰度图究竟是怎么变换的
    1.1 PIL:Python图像处理类库
    基于GoogLeNet的不同花分类微调训练案例
    消息队列 ActiveMQ的简单了解以及点对点与发布订阅的方法实现ActiveMQ
    解决session共享问题
    linux安装Nginx 以及 keepalived 管理Nginx
    nginx解决服务器宕机、解决跨域问题、配置防盗链、防止DDOS流量攻击
    Nginx实现负载均衡
  • 原文地址:https://www.cnblogs.com/liuyingjie/p/4941542.html
Copyright © 2011-2022 走看看