结构体

结构体是什么?

结构体就是把多个变量包装在一起,结构体也可以作为类型使用,你可以定义结构体变量,结构体指针。

为什么需要结构体?

想象现在有一个函数 char* findStudentName(char* no),它通过学号查找学生姓名。当我们仅仅需要查找学生姓名时,是没问题的。假设现在我们还需要获取到年龄,性别,联系电话,班级这些信息呢?你可能会想到我们是不是应该再写几个诸如 findStudentAge, findStudentSex, findStudentPhone, findStudentClass 这样的函数。仅从功能上来说这样确实可以解决问题,但是这个方案不好,因为往往需要多次调用才能获取到需要的全部信息,等到你了解到数据库之类的技术后,你就会认识到这个方案在运行速度上也是不能接受的。

上面提到的这些函数大部分都是返回 char* 类型,现在想象一下,假设有个类型就叫 Student,这个 Student 类型包含了你所需要的所有的学生信息。那么上面的问题是不是就可以用一个 Student findStudent(char* no) 函数解决了?这里提到的 Student 类型在 C 语言中就是通过结构体来实现。

怎么做?

首先要定义上面提到的结构体 Student

struct Student {
   char* name;
   char* sex;
   int age;
   char* class;
   char* no;
   char* phone;
};

struct 是定义和使用结构体的关键字,后面的 Student 是结构体的名字,用花括号包起来的是结构体的成员定义,多个成员之间用分号分割,每个成员需要指明类型和名字。

接下来看下结构体的使用代码

struct Student findStudent(char* no) {    //注意函数的返回值是 struct Student
    struct Student student;   //声明结构体变量
    student.age = 20;       //给结构体成员赋值
    student.name = "小明";
    student.sex = "男";
    student.class = "一年级七班";
    student.no = no;
    student.phone = "18282828282";
    return student;
}

这个 findStudent 函数返回了一个 Student 结构体,在代码中你可以看到如何声明一个结构体变量,如何给每个成员赋值。

最后添加一个 main 函数,尝试调用以上代码

int main() {
    struct Student student = findStudent("1140707");
    printf("%s, %s, %d, %s, %s, %s", student.name, student.sex
            , student.age, student.class, student.no, student.phone);
    return 0;
}

现在把以上代码复制到你的编辑器中编译运行试试看。注意结构体和函数的声明要在使用前。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容