• c语言结构体定义和结构体数组第一部分笔记


    结构体

    结构体的定义

    struct  名称

    {

            类型   成员变量名

    };

    例如 

    1. struct stu
    2. {
    3.     char name[11];
    4.     int age;
    5.     char address[100];
    6. };

    赋值,和输出

    1. int main() {
    2. struct stu stu1; //struct stu 这个整体是一个类型就像是int
    3. //stu1.name = "张三"; 数组常量没有办法赋值错误
    4. strcpy(stu1.name, "张三"); //strcpy 赋值字符串到指定内存空间
    5. stu1.age = 19;
    6. strcpy(stu1.address, "河北省保定市");
    7. //结构体的输出
    8. printf("姓名:%s\n", stu1.name);
    9. printf("年龄:%d\n", stu1.age);
    10. printf("地址:%s\n", stu1.address);
    11. return 0;
    12. }

    还可以使用大括号的方式赋值,类似于java的有参构造器

    1. int main() {
    2. struct stu stu2 = { "李四",20,"中国" };
    3. printf("姓名:%s\n", stu2.name);
    4. printf("年龄:%d\n", stu2.age);
    5. printf("地址:%s\n", stu2.address);
    6. return 0;
    7. }

    也可以在定义的时候直接赋值

    1. struct stu
    2. {
    3. char name[11];
    4. int age;
    5. char address[100];
    6. } stu3 = {"王五",11,"北京"};

    还可以用scanf来直接输入

    1. int main() {
    2. //直接输入信息
    3. struct stu stu66;
    4. printf("请您输入信息:");
    5. scanf("%s%d%s", stu66.name, &stu66.age, stu66.address); //数组就是地址,所以不用加取地址的符号& 中间打空格直接输入就OK
    6. printf("姓名:%s\n", stu66.name);
    7. printf("年龄:%d\n", stu66.age);
    8. printf("地址:%s\n", stu66.address);
    9. return 0;
    10. }

    结构体数组

    跟c中普通类型的数组定义过程是一样的

    如 int arr[3];

    struct student  stu[3];// 学生类型的数组

    也可以使用sizeof来获取长度

    1. #include
    2. struct student
    3. {
    4. char name[21];
    5. int souce[3];//成绩
    6. };
    7. int main() {
    8. //结构体数组赋值
    9. struct student stu[3] = {
    10. {"张三",11,22,33},
    11. {"李四",44,55,66},
    12. {"王五",77,88,99}
    13. };
    14. //遍历信息
    15. for (int i = 0; i < 3; i++)
    16. {
    17. printf("姓名:%s\n", stu[i].name);
    18. printf("数学成绩:%d\n", stu[i].souce[0]);
    19. printf("英语成绩:%d\n", stu[i].souce[1]);
    20. printf("语文成绩:%d\n", stu[i].souce[2]);
    21. printf("-------------------------\n");
    22. }
    23. //使用sizeof计算大小
    24. //一般都会比定义的时候大一点,因为结构体成员需要内存偏移
    25. printf("数组的大小为%d\n", sizeof(stu));
    26. printf("数组中元素的大小为:%d\n", sizeof(stu[0]));
    27. printf("数组中元素个数:%d\n", sizeof(stu) / sizeof(stu[0]));
    28. return 0;
    29. }

    对结构体数组,进行排序

    这里采用的是对年龄进行最简单的冒泡排序

    完全就可以当成变量去直接的交换

    1. #include
    2. struct student
    3. {
    4. char name[21];
    5. int age;
    6. };
    7. int main()
    8. {
    9. //创建学生类型的数组并赋初值
    10. struct student stu[4]={
    11. {"张三",51},
    12. {"李四",11},
    13. {"王五",21},
    14. {"赵6",5}
    15. };
    16. for (int i = 0; i < 4; i++)
    17. {
    18. printf("姓名:%s\n", stu[i].name);
    19. printf("年龄: %d\n", stu[i].age);
    20. printf("-------------------------\n");
    21. }
    22. //开始排序(这里使用的是最简单的冒泡排序)
    23. for (int i = 0; i < 3; i++) {
    24. for (int j = 0; j < 3 - i;j++) {
    25. if (stu[j].age > stu[j + 1].age) { //升序
    26. //定义一个临时变量交换
    27. struct student temp = stu[j];
    28. stu[j] = stu[j + 1];
    29. stu[j + 1] = temp;
    30. }
    31. }
    32. }
    33. printf("排序后\n");
    34. for (int i = 0; i < 4; i++)
    35. {
    36. printf("姓名:%s\n", stu[i].name);
    37. printf("年龄: %d\n", stu[i].age);
    38. printf("-------------------------\n");
    39. }
    40. return 0;
    41. }

  • 相关阅读:
    每日一学————基本配置和管理
    js中Promise的常见用法 比如resolve、race都是啥意思
    JavaScript
    SSRF漏洞
    windows安装jenkins2.346.1
    消息中间件介绍
    day33网络编程
    沈阳工业大学计算机考研资料汇总
    【C++】vector的模拟实现【完整版】
    性能测试【第三篇】Jmeter的使用
  • 原文地址:https://blog.csdn.net/m0_64365315/article/details/126572172