PAT乙级程序设计——知识储备(struct结构体)

197 阅读2分钟

struct结构体

结构体定义

struct 结构体名{
    结构体需要的变量;
}

结构体是一种集合,和类的概念相类似。简单理解,结构体就是一种自定义的数据类型。结构体的优势就在于很方便的进行多数据管理。 这里我们学习的是C++中的结构体。与C中结构体不同的是,C语言中的结构体只能描述一个对象的状态,不能描述一个对象的额行为。在C++中,C++的结构体可以包含函数,因此使C++的结构体具有类的功能,但是与类不同的是,结构体的函数默认为public,而class中默认的是private。

结构体的优点

  1. 可以封装一个类对象,绑定多个元素在一起,当某类元素进行比较从而重新排序时,其他相关联的元素不会丢失不见。
  2. 用结构体创造新的属性,简化运算。
struct student{
    char name[16];
    int age;
    int grade;
    void say()
    {
        printf("I am %s\n", name);
    }
};
struct teacher{
    char *name;//危险
    int age;
    int level;//职称
};
int main()
{
    struct student ZhangSan;
    struct teacher WangEr;
    strcpy(ZhangSan.name, "ZhangSan");
    ZhangSan.say();
    return 0;
}

初始化与未初始化

位初始化

#include <stdio.h>
#include <string.h>
struct student{
    char name[16];
    int age;
    int grade;
    void say()
    {
        printf("I am %s\n", name);
    }
};
struct teacher{
    char *name;//危险
    int age;
    int level;//职称
    void say()
    {
        printf("I am %s\n", name);
    }
};
int main()
{
    struct student ZhangSan;
    struct teacher WangEr;
    ZhangSan.say();//I am @@, 内存里面是什么就输出什么
    strcpy(ZhangSan.name, "ZhangSan");
    ZhangSan.say();//I am ZhangSan
    return 0;
}

初始化

#include <stdio.h>
#include <string.h>
struct student{
    char name[16];
    int age;
    int grade;
    student()
    {
        strcpy(name, "Student");
    }
    void say()
    {
        printf("I am %s\n", name);
    }
};
struct teacher{
    char *name;//危险
    int age;
    int level;//职称
    void say()
    {
        printf("I am %s\n", name);
    }
};
int main()
{
    struct student ZhangSan;
    struct teacher WangEr;
    ZhangSan.say();
    strcpy(ZhangSan.name, "ZhangSan");
    ZhangSan.say();
    return 0;
}

结构体数组的使用

引用文章www.cnblogs.com/harrypotter…