版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}