C语言第8课——结构体

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35682844/article/details/84453063

结构体

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

假设想要跟踪图书馆中书本的动态,需要跟踪每本书的下列属性:

  • Title
  • Author
  • Subject
  • Book ID
#include <stdio.h>

struct student    //定义结构
{
	char *name;
	char gender;
	int age;
	float score;
};

void showInfo(struct student stu)      //结构作为函数的参数
{
	printf("姓名:%s\n", stu.name);    //访问结构成员
	printf("性别:%c\n", stu.gender);
	printf("年龄:%d\n", stu.age);
	printf("分数:%f\n", stu.score);
}

int main(void)
{
	struct student stu = { "张三",'M',18,99};   //结构体变量的初始化
	showInfo(stu);
	return 0;
}

指向结构的指针

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

struct Books *struct_pointer;

以在上述定义的指针变量中存储结构变量的地址。

struct_pointer = &Book1;

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

struct_pointer->title;

实例

#include <stdio.h>
#include <string.h>
 
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
 
/* 函数声明 */
void printBook( struct Books *book );
int main( )
{
   struct Books Book1;        /* 声明 Book1,类型为 Books */
   struct Books Book2;        /* 声明 Book2,类型为 Books */
 
   /* Book1 详述 */
   strcpy( Book1.title, "C Programming");
   strcpy( Book1.author, "Nuha Ali"); 
   strcpy( Book1.subject, "C Programming Tutorial");
   Book1.book_id = 6495407;
 
   /* Book2 详述 */
   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "Zara Ali");
   strcpy( Book2.subject, "Telecom Billing Tutorial");
   Book2.book_id = 6495700;
 
   /* 通过传 Book1 的地址来输出 Book1 信息 */
   printBook( &Book1 );
 
   /* 通过传 Book2 的地址来输出 Book2 信息 */
   printBook( &Book2 );
 
   return 0;
}
void printBook( struct Books *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);
}

猜你喜欢

转载自blog.csdn.net/qq_35682844/article/details/84453063