C++ 数据结构(结构体struct)

时间:2022-08-30 19:39:00
定义结构体:

下面是声明一个结构体类型 MyBook,变量为 book

//定义结构体
struct MyBook{

char name[20];
char author[10];
char abstract[27];
int number;
} book;

访问结构体:
为了访问结构的成员,我们使用 成员访问运算符(.) 。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。

void getStruct(){

MyBook book1;

strcpy(book1.name,"C++从入门到放弃");
strcpy(book1.author,"张三封");
strcpy(book1.abstract,"这本书讲到为什么从入门到放弃");
book1.number = 35432;

cout<<"book1的名字是:"<<book1.name<<endl;
cout<<"book1的作者是:"<<book1.author<<endl;
cout<<"book1的摘要是:"<<book1.abstract<<endl;
cout<<"book1的总字数是:"<<book1.number<<endl;
}

结构作为函数参数:
可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。您可以使用上面实例中的方式来访问结构变量:
//以结构体作为参数的函数
void printBook( struct MyBook book )
{
cout << "书名称 : " << book.name <<endl;
cout << "书作者 : " << book.author <<endl;
cout << "书摘要 : " << book.abstract <<endl;
cout << "书字数 : " << book.number <<endl;
}
指向结构的指针:

可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:
struct   Books *struct_pointer;
现在,可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:
struct_pointer = &Book1;
为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:
struct_pointer->title;

//指向结构的指针
void printBook1(struct MyBook *book){

cout << "书名称1 : " << book -> name <<endl;
cout << "书作者1 : " << book -> author <<endl;
cout << "书摘要1 : " << book -> abstract <<endl;
cout << "书字数1 : " << book -> number <<endl;
}

完整代码:
//定义结构体
struct MyBook{

char name[20];
char author[10];
char abstract[27];
int number;
} book;

void getStruct(){

MyBook book1;

strcpy(book1.name,"C++从入门到放弃");
strcpy(book1.author,"张三封");
strcpy(book1.abstract,"这本书讲到为什么从入门到放弃");
book1.number = 35432;

cout<<"book1的名字是:"<<book1.name<<endl;
cout<<"book1的作者是:"<<book1.author<<endl;
cout<<"book1的摘要是:"<<book1.abstract<<endl;
cout<<"book1的总字数是:"<<book1.number<<endl;
}
//以结构体作为参数的函数
void printBook( struct MyBook book )
{
cout << "书名称 : " << book.name <<endl;
cout << "书作者 : " << book.author <<endl;
cout << "书摘要 : " << book.abstract <<endl;
cout << "书字数 : " << book.number <<endl;
}
//指向结构的指针
void printBook1(struct MyBook *book){

cout << "书名称1 : " << book -> name <<endl;
cout << "书作者1 : " << book -> author <<endl;
cout << "书摘要1 : " << book -> abstract <<endl;
cout << "书字数1 : " << book -> number <<endl;
}

int main(){

MyBook book1;
strcpy(book1.name,"C++从入门到放弃");
strcpy(book1.author,"张三封");
strcpy(book1.abstract,"这本书讲到为什么从入门到放弃");
book1.number = 35432;

printBook(book1);

printBook1(&book1);
}

运行效果:
C++ 数据结构(结构体struct)