c/c++ 结构体

 

定义

结构体是一种数据类型, 存放一组不同类型数据

struct Stu {
    char* name;
    char* num;
    int   age;
};

C结构体成员默认公有

c++结构体成员也默认公有, 但可使用访问控制(如private、protected)

使用

初始化

C99指定成员初始化(Designated Initializer)

struct Student {
    int id;
    char name[20];
    float score;
};

struct Student s = {
    .id = 1,
    .name = "Tom",
    .score = 95.5
};

成员顺序可以打乱, 未初始化成员自动置 0, 可读性强, 适合成员多的结构体

匿名赋值

定义结构体实例时, 不给该实例命名, 直接使用初始化列表进行赋值

  • 示例, 匿名赋值
#include <stdio.h>

struct Point {
    int x;
    int y;
};

int main() {
    // 匿名赋值
    struct Point p1 = {10, 20};

    // 直接使用匿名结构体, C99及c++支持
    struct Point p2 = {
        .x = 30,
        .y = 40
    };

    printf("p1: (%d, %d)\n", p1.x, p1.y);
    printf("p2: (%d, %d)\n", p2.x, p2.y);

    return 0;
}

c++构造函数

Stu(char *name, char *num, int age){
    this->name = name;
    this->num = num;
    this->age = age;
}

数组

#include <stdio.h>

int main() {
    Stu s[3];

    s[0] = Stu("WANG", "A-234", 19);
    s[1] = Stu("Han", "A-235", 19);
    s[2] = Stu("Liu", "A-236", 19);
    for(int i = 0; i < 3; i++){
        pritf("%s %s %d\n", s[i].name, s[i].num, s[i].age)
    }
    return 0;
}