C/C++ 结构体

 

定义

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

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

C结构体成员默认公有

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

使用

初始化

C++构造函数

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

匿名赋值

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

  • 示例, 匿名赋值
#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;
}

结构体数组

#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;
}