结构体和指针

结构

为了访问结构的成员,我们使用成员访问运算符(.)。

成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。

下面的实例演示了结构的用法:

#include <iostream>
#include <cstring>

using namespace std;

struct Book 
{
	char title[50];
	char author[20];
	double price;
	char sort;
	bool isNew;
}; 

int main() {
  Book book1;
  Book book2;
  //book1.title = "<<Foxdevelop学习指南>>"
  strcpy(book1.title,"<<Foxdevelop学习指南>>");
  strcpy(book1.author,"孙老师");
  book1.price = 12.3;
  book1.sort = 'a';
  book1.isNew = 1;
  
  strcpy(book2.title,"<<如何成为一个好人>>");
  	
  cout << book1.title << endl;  
  cout << book1.author << endl;
  cout << book1.price << endl;
  cout << book1.sort << endl;
  cout << book1.isNew << endl;
  
  cout << book2.title << endl;
  
  return 0;
}Code language: PHP (php)

实例中定义了结构体类型 Book 及其两个变量 book1 和 book2。

结构作为函数参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。

#include <iostream>
#include <cstring>

using namespace std;

struct Book 
{
	char title[50];
	char author[20];
	double price;
	char sort;
	bool isNew;
};

void PrintBook(Book book)
{
	cout << book.title << endl;  
  	cout << book.author << endl;
  	cout << book.price << endl;
  	cout << book.sort << endl;
  	cout << book.isNew << endl;
}

int main() {
  Book book1;
  Book book2;
  //book1.title = "<<Foxdevelop学习指南>>"
  strcpy(book1.title,"<<Foxdevelop学习指南>>");
  strcpy(book1.author,"孙老师");
  book1.price = 12.3;
  book1.sort = 'a';
  book1.isNew = 1;
  
  strcpy(book2.title,"<<如何成为一个好人>>");
  strcpy(book2.author,"黄老师");
  book2.price = 34.3;
  book2.sort = 'b';
  book2.isNew = 0;
  	
  PrintBook(book1);
  PrintBook(book2);

  return 0;
}Code language: PHP (php)

指向结构的指针

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:

struct Book *struct_pointer;

现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:

struct_pointer = &book1;

为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:

struct_pointer->title;Code language: PHP (php)
#include <iostream>
#include <cstring>

using namespace std;

struct Book 
{
	char title[50];
	char author[20];
	double price;
	char sort;
	bool isNew;
};

void PrintBook(Book *book)
{
	cout << book->title << endl;  
  	cout << book->author << endl;
  	cout << book->price << endl;
  	cout << book->sort << endl;
  	cout << book->isNew << endl;
}

int main() {
  Book book1;
  Book book2;
  //book1.title = "<<Foxdevelop学习指南>>"
  strcpy(book1.title,"<<Foxdevelop学习指南>>");
  strcpy(book1.author,"孙老师");
  book1.price = 12.3;
  book1.sort = 'a';
  book1.isNew = 1;
  
  strcpy(book2.title,"<<如何成为一个好人>>");
  strcpy(book2.author,"黄老师");
  book2.price = 34.3;
  book2.sort = 'b';
  book2.isNew = 0;
  	
  PrintBook(&book1);
  PrintBook(&book2);

  return 0;
}Code language: PHP (php)

typedef 关键字

下面是一种更简单的定义结构的方式,您可以为创建的类型取一个”别名”。例如:

typedef struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} Books;

现在,您可以直接使用 Books 来定义 Books 类型的变量,而不需要使用 struct 关键字。下面是实例:

Books Book1, Book2;

您可以使用 typedef 关键字来定义非结构类型,如下所示:

long int a = 123;
typedef long int ABC;
ABC b = 123L;

cout << b << endl;

编程不是把所有的技术都学了并且学好了,然后才能编程并且所有技术都必须用上。不是的。

编程其实学了后,您可以挑选一些技术来用就可以了。

Previous:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注