C++ 结构
第三章 C++结构
前言
C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
一、定义结构
声明结构体的方式和声明类的方式大致相同,其区别如下:
- 使用关键字 struct 而不是关键字 class。
- 尽管结构体可以包含成员函数,但它们很少这样做。所以,通常情况下结构体声明只会声明成员变量。
- 结构体声明通常不包括 public 或 private 的访问修饰符。
- 类成员默认情况是私有的,而结构体的成员则默认为 public。程序员通常希望它们保持公开,只需使用默认值即可。
以下是一个结构体声明的示例,该结构体将 5 个变量绑定在一起,保存了员工的工资单数据。这个特殊结构体的名称是 Books。请注意,它以大写字母开头,这和类名使用大写字母开头的约定一样。另外还要注意,与类声明一样,在结构体声明的大括号后面必须有一个分号。
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
二、初始化结构体
当定义结构体变量时,可以通过两种方式初始化它:使用初始化列表或构造函数。
1.初始化列表
初始化结构体变量成员的最简单的方法是使用初始化列表。初始化列表是用于初始化一组内存位置的值列表。列表中的项目用逗号分隔并用大括号括起来。
Books book1 = {"C++ 教程","water","编程语言",0};
2.访问结构成员
代码如下(示例):
int main( )
{
cout << book1.title <<endl;
cout << book1.book_id <<endl;
}
3.指向结构的指针
struct Books
{ char title[50];
char author[50];
char subject[100];
int id;};
int main( )
{
Books book1 = {"C++ 教程","water","编程语言",0};
// 定义指向结构的指针,方式与定义指向其他类型变量的指针相似
struct Books *struct_pointer;
// 为了查找结构变量的地址,请把 & 运算符放在结构名称的前面
struct_pointer = &book1;
// 为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符
struct_pointer->id = 12;
book1.id = 13;
cout<<struct_pointer->id<<endl;
}
4.结构作为函数参数
void printBook(struct Books *book);
void printBook1(struct Books book);
struct Books
{
char title[50];
char author[50];
char subject[100];
int id;
};
int main( )
{
Books book1 = {"C++ 教程","water","编程语言",0};
struct Books *struct_pointer;
struct_pointer = &book1;
printBook(struct_pointer);
printBook1(book1);
return 0;
}
void printBook1( struct Books book )
{
cout << "书标题 : " << book.title <<endl;
cout << "书作者 : " << book.author <<endl;
cout << "书类目 : " << book.subject <<endl;
cout << "书 ID : " << book.id <<endl;
}
// 该函数以结构指针作为参数
void printBook( struct Books *book )
{
cout << "书标题 : " << book->title <<endl;
cout << "书作者 : " << book->author <<endl;
cout << "书类目 : " << book->subject <<endl;
cout << "书 ID : " << book->id <<endl;
}