c++中结构体的使用
2024-10-21 06:17:41
文章链接:
结构体定义:
struct Books
{
char title[];
char author[];
char subject[];
int book_id;
} book;
访问结构体成员:
#include <iostream>
#include <cstring> using namespace std; // 声明一个结构体类型 Books
struct Books
{
char title[];
char author[];
char subject[];
int book_id;
}; int main( )
{
Books Book1; // 定义结构体类型 Books 的变量 Book1
Books Book2; // 定义结构体类型 Books 的变量 Book2 // Book1 详述
strcpy( Book1.title, "C++ 教程");
strcpy( Book1.author, "Runoob");
strcpy( Book1.subject, "编程语言");
Book1.book_id = ; // Book2 详述
strcpy( Book2.title, "CSS 教程");
strcpy( Book2.author, "Runoob");
strcpy( Book2.subject, "前端技术");
Book2.book_id = ; // 输出 Book1 信息
cout << "第一本书标题 : " << Book1.title <<endl;
cout << "第一本书作者 : " << Book1.author <<endl;
cout << "第一本书类目 : " << Book1.subject <<endl;
cout << "第一本书 ID : " << Book1.book_id <<endl; // 输出 Book2 信息
cout << "第二本书标题 : " << Book2.title <<endl;
cout << "第二本书作者 : " << Book2.author <<endl;
cout << "第二本书类目 : " << Book2.subject <<endl;
cout << "第二本书 ID : " << Book2.book_id <<endl; return ;
}
结构作为函数参数:
#include <iostream>
#include <cstring> using namespace std;
void printBook( struct Books book ); // 声明一个结构体类型 Books
struct Books
{
char title[];
char author[];
char subject[];
int book_id;
}; int main( )
{
Books Book1; // 定义结构体类型 Books 的变量 Book1
Books Book2; // 定义结构体类型 Books 的变量 Book2 // Book1 详述
strcpy( Book1.title, "C++ 教程");
strcpy( Book1.author, "Runoob");
strcpy( Book1.subject, "编程语言");
Book1.book_id = ; // Book2 详述
strcpy( Book2.title, "CSS 教程");
strcpy( Book2.author, "Runoob");
strcpy( Book2.subject, "前端技术");
Book2.book_id = ; // 输出 Book1 信息
printBook( Book1 ); // 输出 Book2 信息
printBook( Book2 ); return ;
}
void printBook( struct Books book )
{
cout << "书标题 : " << book.title <<endl;
cout << "书作者 : " << book.author <<endl;
cout << "书类目 : " << book.subject <<endl;
cout << "书 ID : " << book.book_id <<endl;
}
结构体指针:
您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:
struct Books *struct_pointer;
现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:
struct_pointer = &Book1;
为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:
struct_pointer->title;
例子:
#include <iostream>
#include <cstring> using namespace std;
void printBook( struct Books *book ); struct Books
{
char title[];
char author[];
char subject[];
int book_id;
}; int main( )
{
Books Book1; // 定义结构体类型 Books 的变量 Book1
Books Book2; // 定义结构体类型 Books 的变量 Book2 // Book1 详述
strcpy( Book1.title, "C++ 教程");
strcpy( Book1.author, "Runoob");
strcpy( Book1.subject, "编程语言");
Book1.book_id = ; // Book2 详述
strcpy( Book2.title, "CSS 教程");
strcpy( Book2.author, "Runoob");
strcpy( Book2.subject, "前端技术");
Book2.book_id = ; // 通过传 Book1 的地址来输出 Book1 信息
printBook( &Book1 ); // 通过传 Book2 的地址来输出 Book2 信息
printBook( &Book2 ); return ;
}
// 该函数以结构指针作为参数
void printBook( struct Books *book )
{
cout << "书标题 : " << book->title <<endl;
cout << "书作者 : " << book->author <<endl;
cout << "书类目 : " << book->subject <<endl;
cout << "书 ID : " << book->book_id <<endl;
}
关于typedef的使用和c语言中差不多。但是C与C++结构体中前者不能有函数,后者可以有。
类与结构体在 C++ 中只有两点区别,除此这外无任何区别。
- (1)class 中默认的成员访问权限是 private 的,而 struct 中则是 public 的。
- (2)从 class 继承默认是 private 继承,而从 struct 继承默认是 public 继承。
- (3)class 可以定义模板,而 struct 不可以。
最新文章
- [密码学] C++ 实现 AES128 加密算法
- git 教程(4)--版本回退
- Android UI组件
- MySQL 授权远程登录(Ubuntu 环境)
- ArcGIS Engine断开其他ArcSDE用户连接的解决方案
- github快速入门(一)
- ServerRelativeUrl与Url
- Java基础知识强化之集合框架笔记54:Map集合之HashMap集合(HashMap<;String,String>;)的案例
- PostgreSQL与MySQL比较(转)
- 解决android应用程序适用新老android系统版本方法
- Scientific Toolworks Understand for linux安装方法
- how to check if you have TURNIN successfully?
- 【lucene系列学习四】log4j日志文件实现多线程的测试
- 杭电ACM2020--绝对值排序
- HTML页面中插入CSS样式的三种方法
- 完美解决gradle下载慢的问题
- Windows Azure开发之Linux虚拟机
- C++学习(二十一)(C语言部分)之 函数2
- 使用DUPLICATE 方式创建ORACLE 11G DG备库环境
- thinkphp 3.2 多表查询 group