一. 结构作为函数参数
可以把结构作为函数参数,传参方式与其他类型的变量或指针类似.
实例:
#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;
struct Books Book2;
/* 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信息
printBook(Book1);
//输出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: %s\n", book.book_id);
}
二. 指向结构的指针
可以定义指向结构的指针,方式和定义指向其他类型变量的指针相似
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);
}