C++结构

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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值