首页 > 其他分享 >C语言 结构体

C语言 结构体

时间:2024-10-01 22:23:59浏览次数:6  
标签:struct name age C语言 stu Student 结构

  1. 结构体的概念
    • 在C语言中,结构体(struct)是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个逻辑上相关的整体。它类似于一个容器,可以容纳多种不同类型的数据项。
  2. 结构体的定义
    • 结构体的定义语法如下:
      struct 结构体名 {
          成员类型1 成员名1;
          成员类型2 成员名2;
          //...
          成员类型n 成员名n;
      };
      
      例如,定义一个表示学生信息的结构体:
      struct Student {
          char name[20];
          int age;
          float score;
      };
      
    • 这里定义了一个名为Student的结构体,它包含三个成员:一个字符数组name用于存储学生姓名,一个整数age用于存储学生年龄,一个浮点数score用于存储学生成绩。
  3. 结构体变量的声明与初始化
    • 声明
      • 可以在结构体定义之后声明结构体变量。例如:
        struct Student stu1;
        
      • 也可以在定义结构体的同时声明结构体变量:
        struct Student {
            char name[20];
            int age;
            float score;
        } stu2;
        
    • 初始化
      • 结构体变量可以在声明时进行初始化。例如:
        struct Student stu3 = {"Tom", 18, 90.5};
        
      • 还可以通过指定成员来初始化:
        struct Student stu4 = {.age = 19,.score = 88.0,.name = "Jerry"};
        
  4. 结构体成员的访问
    • 使用点(.)运算符来访问结构体变量的成员。例如:
      struct Student stu = {"Alice", 20, 95.0};
      printf("Name: %s, Age: %d, Score: %f\n", stu.name, stu.age, stu.score);
      
    • 如果是指向结构体的指针,则使用箭头(->)运算符来访问成员。例如:
      struct Student *pStu = &stu;
      printf("Name: %s, Age: %d, Score: %f\n", pStu->name, pStu->age, pStu->score);
      
  5. 结构体的嵌套
    • 结构体中可以嵌套其他结构体。例如:
      struct Date {
          int year;
          int month;
          int day;
      };
      
      struct Student {
          char name[20];
          int age;
          struct Date birthday;
          float score;
      };
      
      要访问嵌套结构体中的成员,可以使用多级点运算符或者箭头运算符(如果是指针的话)。例如:
      struct Student stu = {"Bob", 21, {2000, 5, 10}, 92.0};
      printf("Birthday: %d - %d - %d\n", stu.birthday.year, stu.birthday.month, stu.birthday.day);
      
  6. 结构体数组
    • 可以定义结构体数组,它是一组具有相同结构体类型的元素。例如:
      struct Student students[3];
      
      初始化结构体数组的方法如下:
      struct Student students[3] = {{"Mike", 18, 85.0}, {"John", 19, 90.0}, {"Lily", 20, 92.0}};
      
      访问结构体数组元素的成员与访问单个结构体变量的成员类似。例如:
      for (int i = 0; i < 3; i++) {
          printf("Student %d: Name: %s, Age: %d, Score: %f\n", i + 1, students[i].name, students[i].age, students[i].score);
      }
      
  7. 结构体在函数中的使用
    • 结构体可以作为函数的参数传递,也可以作为函数的返回值。
    • 结构体作为参数传递
      • 当结构体作为参数传递给函数时,默认是按值传递,这意味着整个结构体内容会被复制一份传递给函数。例如:
        void printStudent(struct Student stu) {
            printf("Name: %s, Age: %d, Score: %f\n", stu.name, stu.age, stu.score);
        }
        
      • 如果结构体较大,按值传递可能会导致效率低下,可以使用指针传递来提高效率。例如:
        void modifyStudent(struct Student *pStu) {
            pStu->age++;
        }
        
    • 结构体作为返回值
      • 函数也可以返回结构体。例如:
        struct Student createStudent() {
            struct Student newStu = {"New Student", 18, 88.0};
            return newStu;
        }
        

结构体在C语言中是一种非常有用的数据组织工具,可以方便地处理复杂的数据结构,提高代码的模块化和可读性。

标签:struct,name,age,C语言,stu,Student,结构
From: https://www.cnblogs.com/androidsuperman/p/18444200

相关文章

  • 2024.10.1 总结(集训;数据结构 主要是线段树)
    XK又来给我们讲课了。开心!1.Baka'sTrick两种理解:双栈模拟队列。[找到若干个划分点,使得每个区间包含恰好一个划分点。维护划分点到划分点段的前缀、后缀信息。在在线的实现中,在队列中维护仅仅一个划分点,维护它到前面每个点和它到后面每个点的信息。当这个划分点出队时,把队......
  • C语言 形参和实参
    在C语言中,强制类型转换(强转)可能会导致精度发生变化,具体情况取决于转换的类型。数值类型转换浮点数转换为整数当把浮点数强制转换为整数时,小数部分会被直接截断,精度必然会发生变化。例如:floatnum=3.14;intresult=(int)num;//此时result的值为3,小数部分0.14被截断......
  • c语言中的链接性和作用域
    什么是链接性链接性指的是标识符(如变量、函数)在多个翻译单元(通常是多个源文件)之间共享和可见的能力。链接性决定了标识符的作用范围,即它能在多大范围内被访问或引用链接性无链接性:标识符只能在局部作用域内使用,通常用于局部变量内部链接性:标识符只能在定义它的文件内使用,使......
  • 实验1 C语言输入输出和简单程序编写
    1.实验任务1#include<stdio.h>intmain(){printf("oo\n");printf("<H><H>\n");printf("IIII\n");return0;} 2.实验任务2//从键盘上输入三个数据作为三角形边长,判断其能否构成三角形//构成三......
  • 实验1 C语言输入输出和简单程序编写
    1.实验任务1task1_1.c#include<stdio.h>intmain(){printf("o\n");printf("<H>\n");printf("II\n");printf("o\n");printf("<H>\n");printf("II\n&q......
  • 《数据结构(刘大有)》学习(6)
    系列文章目录一、绪论二、顺序表、链表三、堆栈、队列四、数组五、字符串六、树目录树的基本概念树的定义树的特点树的相关术语度层数高度路径二叉树定义特点定理满二叉树定义特点完全二叉树定义特点二叉树的存储结构顺序存储结点结构优点缺点 链式存储 结点结构三......
  • 初识C语言
    C语言人机交互的一门语言 一刚发明计算机时人们普遍用着二进制语言也就是0和1的组合,那时的人们要编程,要翻书对应其数字0和1代表的意义,后来人们将一些常见的0和1写成助记符于是就形成了汇编语言,然而汇编语言仍然不够省事,于是人们苦思冥想,想出了编译器这一转折性的app,人们......
  • C语言数组探秘:数据操控的艺术【下】
    承接上篇,我们继续讲数组的内容。八.二维数组的使用当我们掌握了二维数组的创建和初始化,那我们怎么使用二维数组呢?其实二维数组访问也是使用下标的形式的,二维数组是有行和列的,只要锁定了行和列就能唯一锁定数组中的一个元素。C语言规定,二维数组的行是从0开始的,列也是从0......
  • 鹏哥C语言62---第9次作业:函数递归练习
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>//-------------------------------------------------------------------------------------------第九次作业 函数递归等//----------------------------------------------------------------......
  • 鹏哥C语言59-60---三子棋游戏
    //------------------------------------------------------5. 数组实现(游戏)-----------------------------------------//----------------------------------------------------5.1利用数组实现三子棋----------------------------------------//分块 test.c  ......