小朋友学C语言(37):结构体

2018-02-27 10:54:20来源:https://www.jianshu.com/p/44e7b3a5f2c1作者:翡翠森林Z人点击

分享


一、结构体

C语言中的数组存储的是相同数据类型的数据项,结构体是 C 编程中一种用户自定义的可用的数据类型,它允许你存储不同类型的数据项。


结构体用于表示一条记录,假设你想要跟踪图书馆中书本的动态,你可能需要跟踪每本书的下列属性:


Title
Author
Subject
Book ID

我们可以定义结构:


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

为了访问结构的成员,我们使用成员访问运算符(.)。
成员访问运算符是结构体变量名称和我们要访问的结构体成员之间的一个句号。
你可以使用 struct 关键字来定义结构类型的变量。
下面的实例演示了结构体的用法:


例1
#include <stdio.h>
#include <string.h>
struct Book
{
char title[50];
char author[50];
char subject[100];
int book_id;
};
int main( )
{
struct Book book1; /* 声明 book1,类型为 Book */
struct Book book2; /* 声明 book2,类型为 Book */
/* 给book1赋值 */
strcpy( book1.title, "西游记");
strcpy( book1.author, "吴承恩");
strcpy( book1.subject, "文学");
book1.book_id = 1001;
/* 给book2赋值 */
strcpy( book2.title, "野性的呼唤");
strcpy( book2.author, "杰克伦敦");
strcpy( book2.subject, "文学");
book2.book_id = 1002;
/* 输出 book1 信息 */
printf( "book 1 title : %s/n", book1.title);
printf( "book 1 author : %s/n", book1.author);
printf( "book 1 subject : %s/n", book1.subject);
printf( "book 1 book_id : %d/n", book1.book_id);
/* 输出 book2 信息 */
printf( "book 2 title : %s/n", book2.title);
printf( "book 2 author : %s/n", book2.author);
printf( "book 2 subject : %s/n", book2.subject);
printf( "book 2 book_id : %d/n", book2.book_id);
return 0;
}

运行结果:


book 1 title : 西游记
book 1 author : 吴承恩
book 1 subject : 文学
book 1 book_id : 1001
book 2 title : 野性的呼唤
book 2 author : 杰克伦敦
book 2 subject : 文学
book 2 book_id : 1002

二、结构体做为函数参数

你可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。你可以使用上面实例中的方式来访问结构体变量


例2
#include <stdio.h>
#include <string.h>
struct Book
{
char title[50];
char author[50];
char subject[100];
int book_id;
};
/* 函数声明 */
void printBook( struct Book book );
int main( )
{
struct Book book1; /* 声明 book1,类型为 Book */
struct Book book2; /* 声明 book2,类型为 Book */
/* 给book1赋值 */
strcpy( book1.title, "西游记");
strcpy( book1.author, "吴承恩");
strcpy( book1.subject, "文学");
book1.book_id = 1001;
/* 给book2赋值 */
strcpy( book2.title, "野性的呼唤");
strcpy( book2.author, "杰克伦敦");
strcpy( book2.subject, "文学");
book2.book_id = 1002;
/* 输出 book1 信息 */
printBook( book1 );
/* 输出 book2 信息 */
printBook( book2 );
return 0;
}
void printBook( struct Book book )
{
printf( "Book title : %s/n", book.title);
printf( "Book author : %s/n", book.author);
printf( "Book subject : %s/n", book.subject);
printf( "Book book_id : %d/n", book.book_id);
}

三、指向结构体的指针

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


struct Book *pointer;

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


pointer = &book1;

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


pointer->title;

让我们使用结构指针来重写上面的实例,这将有助于你理解结构体指针的概念:


例3
#include <stdio.h>
#include <string.h>
struct Book
{
char title[50];
char author[50];
char subject[100];
int book_id;
};
/* 函数声明 */
void printBook( struct Book *book );
int main( )
{
struct Book book1; /* 声明 book1,类型为 Book */
struct Book book2; /* 声明 book2,类型为 Book */
/* 给book1赋值 */
strcpy( book1.title, "西游记");
strcpy( book1.author, "吴承恩");
strcpy( book1.subject, "文学");
book1.book_id = 1001;
/* 给book2赋值 */
strcpy( book2.title, "野性的呼唤");
strcpy( book2.author, "杰克伦敦");
strcpy( book2.subject, "文学");
book2.book_id = 1002;
/* 输出 book1 信息 */
printBook( &book1 );
/* 输出 book2 信息 */
printBook( &book2 );
return 0;
}
void printBook( struct Book *book )
{
printf( "Book title : %s/n", book->title);
printf( "Book author : %s/n", book->author);
printf( "Book subject : %s/n", book->subject);
printf( "Book book_id : %d/n", book->book_id);
}





更多内容请关注微信公众号





feicuisenlin_12x12.jpg









上一篇



目录



下一篇






最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台