C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。

结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:

Title :标题
Author :作者
Subject :类目
Book ID :书的 ID


定义结构

1
2
3
4
5
6
struct strct_name {
type name;
type name2;
type name3;
...
}

初始化结构

1
2
3
4
5
6
7
8
9
10
11
12
struct stru {
char a[10];
char b[10];
int c;
}

stru str;
strcpy(stru,"hello");//需要导入cstring.h
str.b = "两种方法都可以初始化字符串";
str.c = 123;
//打印结构值
cout << str.a << endl << str.b << endl << str.c << endl;

指向结构的指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct stru {
char a[10];
char b[10];
int c;
}

stru str;
stru *str2 = &str;
//这时候就不能用.来访问或者修改结构内容了
需要用到->来进行修改
str2->a = "hello:";
str2->b = "world";
str2->c =4566;
//打印结构值
cout << str2->a << endl << str2->b << endl << str2->c << endl;

结构做函数参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct stru {
char a[10];
char b[10];
int c;
}

stru str;
//初始化
strcpy(stru,"hello");//需要导入cstring
str.b = "两种方法都可以初始化字符串";
str.c = 123;

//调用打印结构函数
printStruct(str);

void printStruct(struct stru str){
//打印结构值
cout << str2->a << endl << str2->b << endl << str2->c << endl;
}

给结构添加别名

1
2
3
4
5
6
7
8
9
10
11
12
typedef struct stru {
char a[10];
char b[10];
int c;
}st;

st str;
strcpy(stru,"hello");//需要导入cstring.h
str.b = "两种方法都可以初始化字符串";
tr.c = 123;
//打印结构值
cout << str.a << endl << str.b << endl << str.c << endl;