• 结构体


    ////////////////////////////////////////////////////////////////////////////////////////结构体部分一//////////////////////////////////////////////////////////////////////////////////////

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    { char arry[20]="傻逼"; //字符串的数组的赋值具有多种的方式
    printf("输出数组字符串:%s ",arry);
    //结构体的学习,此结构体有一点像类的学习 定义结构体的关键子是strcut()
    struct Student //注意结构体的后面具有分号,重点,重点重点。
    { int score;
    char name[20];
    int ge;

    }; //注意此处具有分号
    /*
    struct Student stu1={90,"张琪"}; //注意此处于C++中的区别,这里在进行初始化的时候采用的是大括号{}
    //并且对象的初始化的时候具有等号:=
    //注意在进行初始化的时候,大括号的的值,便是对结构体中的变量进行依次的赋值
    //未进行赋值的变量是系统随机的。注意。

    printf("输出学生的姓名:%s ",stu1.p);//采用点的形式进行调用
    printf("输出学生的成绩:%d ",stu1.score);
    printf("输出学生的个数:%d ",stu1.ge);
    */
    // 进行分开赋值,不在对象的初始化的时候进行赋值
    struct Student stu2;
    stu2.score=98;
    //stu2,name="小明"; 如果变量是一个数组便不能进行这样的赋值,如果是指针变量则可以这样进行赋值
    //如果是数组采用一下形式及逆行赋值。
    strcpy(stu2.name,"小明");//在c 中通常不采用这种形式
    printf("输出学生的姓名:%s ",stu2.name);//采用点的形式进行调用
    printf("输出学生的成绩:%d ",stu2.score);

    return 0;
    }

    //////////////////////////////////////////////////////////////////////////////////////////结构体部分2/////////////////////////////////////////////////////////////////////////////////////////////////////////////

    #include <stdio.h>
    #include <stdlib.h>
    void detes(int date)
    {
    printf("打印传入的形式参数的值: %d ",date);

    }
    int main()
    {
    char *str;//注意此时定义的是野指针,再一次将其进行赋值将会出现错误
    // str= "生活的孤独"; 通常这样会出现一些错误。正确的操作如下
    str=(char *)malloc(128); //给指针变量进行空间的申请。
    memset(str, '',128); //对指针变量进行初始化,1.被初始化的指针,2.用于初始化指针的字符 3.初始化的大小
    // str="社会人员的精确定位十分的重要"; //经过上面的初始化,此时对指针的操作便不会出现错误。
    strcpy(str ,"采用strcpy()进行字符串的赋值这是完美的方法");//采用strcpy()进行字符串的赋值这是完美的方法1.被复制的指针变量 2.所要进行赋值的字符串
    printf("输出的字符串的值: %s ",str);
    puts("==================================================================== ");
    struct student
    { int a;
    char b;
    float c;
    void (*p)(int date);

    };
    struct student stu1={1,'A',1.2}; //实例化对象
    printf("输出初始化的结果:%d ",stu1.a);
    printf("输出初始化后字符变量的结果: %c ",stu1.b);
    printf("输出初始化浮点型变量的结果:%f ",stu1.c);
    // p(10);
    stu1.p=detes; //将结构体的中函数指针,通过函数的地址进行赋值,注意在进行赋值的时候,函数只需要函数名即可函数名便可以表示函数的地址,如同数组一样
    stu1. p(10); //在函数的实现的时候,依然需要对象stu1进行调用不然将会出现错误,此时p指针的参数便是传递给指针所指的对象函数的形式参数。
    return 0;
    }

    //////////////////////////////////////////////////////////////////////////////////结构体部分三///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    { struct student //定义结构体,注意关键字struct
    { int score;
    char *name; //此处的指针是野指针
    };
    int i;
    struct student maxscore; //对象的实例化,注意不能直接通过结构体进行实例化对象,应当加上关键字
    struct student minscore; //对象的实例化 ,注意不能直接通过结构体进行实例化对象,应当加上关键字
    struct student stu[4]; //此时实例化的对象是可变的,可以根据索引及进行创建新的对象
    for(i=0;i<sizeof(stu)/sizeof(stu[0]);i++) //判断对象总共的个数,可以类似于数组的大小的求解方法
    { stu[i].name=(char*)malloc(128); //将指针进行空间开辟,采用mallooc()函数,
    memset(stu[i].name,'',128); //实现指针的初始化。1.需要初始化的指针,2.用于初始化的字符,3.初始化的大小
    printf("请输出%d个学生的名字:",i+1);
    scanf("%s",stu[i].name); //通过scanf()进行字符串的输入,注意在scanf()函数的双引号中不要放入其他的标志,尤其是换行。将会导致输出错误
    //字符串的输入不需要进行取地址。此时输入的字符串便是表示地址。
    printf("请输入%d个学生的成绩:",i+1);
    scanf("%d",&stu[i].score); //地址输入放入是整数,需要进行取地址
    }
    int j;
    j=0;
    //判断的第一种方式
    //maxscore.score=stu[0].score; //通过对象调用结构体的中元素
    //minscore.score=stu[0].score; //通过对象调用结构体中的元素
    //判断的第二种方式
    maxscore=stu[0]; //重点,重点,可以经实例化的对象直接通过另一个对象进行赋值,
    //当一个对象被赋值成另一个对象是,其中的变量的值也会发生改变
    minscore=stu[0];
    for(j=0;j<sizeof(stu)/sizeof(stu[0]);j++) //求出对象的个数。
    {
    printf("输出第%d个学生的成绩",j+1);
    printf("%s:%d ",stu[j].name,stu[j].score);
    //判断的第一种方式
    /*
    if(maxscore.score<stu[j+1].score)
    { maxscore.score=stu[j+1].score;
    }
    if(minscore.score>stu[j+1].score)
    {minscore.score=stu[j+1].score;
    }
    */
    if(maxscore.score<stu[j+1].score)
    {
    maxscore=stu[j+1]; //直接进行对象的赋值
    }
    if(minscore.score>stu[j+1].score)
    {
    minscore=stu[j+1]; //直接及逆行对象的赋值

    }
    }
    printf("输出学生中的最高分:%d ",maxscore.score);
    printf("输出学生中的最低分:%d ",minscore.score);
    return 0;
    }

  • 相关阅读:
    linux常用命令整理
    总结五大常用算法!
    python数组(列表、元组及字典)
    网络编程---笔记1
    python3与python2的区别 记录一波
    Python学习week3-python数据结构介绍与列表
    Python学习week2-python介绍与pyenv安装
    Python学习week1-linux文件系统与IO重定向
    Python学习week1-计算机基础
    css3文本多行省略
  • 原文地址:https://www.cnblogs.com/Nic-zhang/p/14513290.html
Copyright © 2020-2023  润新知