题目
定义图书信息结构体 Book(包含书名、作者与价格),编写函数通过结构体指针接收该结构体并格式化输出图书详情。
输入格式:一行依次输入书名(字符串)、作者(字符串)和价格(浮点数),以空格分隔。
输出格式:按格式输出图书各字段信息,价格保留两位小数。
数据范围与约定:字符串长度不超过 50。
思路与算法
1. 结构体指针与箭头运算符
当通过指针传递结构体时,使用箭头运算符 -> 访问其成员,如 ptr->title,等价于解引用后的 (*ptr).title。
2. 避免大对象值传递拷贝
在 C 语言中,传结构体指针只复制一个地址(通常 4 或 8 字节),相比直接值传递整个结构体能够大幅节省栈内存与拷贝开销。
完整程序
#include <stdio.h>
struct Book {
int id;
double price;
char title[64];
};
int main(void)
{
struct Book b;
struct Book *p = &b; // 结构体指针指向变量 b
// 通过指针访问结构体成员:使用箭头操作符 ->(等价于 (*p).id)
scanf("%d %lf %63s", &p->id, &p->price, p->title);
printf("id=%d title=%s price=%.2f\n", p->id, p->title, p->price);
return 0;
}运行示例
输入:
1 39.9 CPrimer输出:
id=1 title=CPrimer price=39.90