#include <stdio.h>
struct Book {
    char title[50];     // 书名
    char author[30];    // 作者
    int year;           // 出版年份
    float price;        // 价格
};
/* 方式一：
// 函数：逐个接收结构体成员参数
void printBookInfo(char title[], char author[], int year, float price) {
    printf("书名：%s\n", title);
    printf("作者：%s\n", author);
    printf("出版年份：%d\n", year);
    printf("价格：%.2f元\n", price);
}

int main(){
	// 调用示例
	struct Book book = {"基于AI的C语言程序设计（微课版）", "蒋亚平", 2026, 55.5};
	printBookInfo(book.title, book.author, book.year, book.price);	
}
*/

/* 方式二
// 函数：接收整个结构体
void printBookInfo(struct Book b) {
    printf("书名：%s\n", b.title);
    printf("作者：%s\n", b.author);
    printf("出版年份：%d\n", b.year);
    printf("价格：%.2f元\n", b.price);
}

int main(){
	// 调用示例
	struct Book book = {"基于AI的C语言程序设计（微课版）", "蒋亚平", 2026, 55.5};
	printBookInfo(book);  // 传递结构体副本
}
*/

// 函数：接收结构体指针
void printBookInfo(struct Book *p) {
    printf("书名：%s\n", p->title);  // 使用 -> 操作符访问成员
    printf("作者：%s\n", p->author);
    printf("出版年份：%d\n", p->year);
    printf("价格：%.2f元\n", p->price);
}

int main(){
	// 调用示例
	struct Book book = {"基于AI的C语言程序设计（微课版）", "蒋亚平", 2026, 55.5};
	printBookInfo(&book);  // 传递结构体地址
}
