c语言 结构体函数的调用
时间: 2025-01-07 22:39:52 浏览: 8
### 定义和调用结构体成员函数
在C语言中,虽然不像面向对象编程语言那样有类的概念以及可以直接定义成员函数,但可以通过指向结构的指针来实现类似的功能。下面展示如何通过函数参数传递结构体或其指针从而操作结构体成员。
#### 结构体及其成员访问
初始化一个结构变量与初始化数组的语法相似:
```c
struct book {
int id;
char title[50];
char author[50];
double price;
} library = {100010, "Tom and Jerry", "unknown", 10.00};
```
要访问`library`中的成员,比如设置价格或者获取书名,可以这样做[^1]:
```c
printf("%s\n", library.title); // 获取书名
library.price = 9.75; // 设置新的价格
```
#### 定义处理结构体成员的函数
为了更好地管理和封装逻辑,通常会把针对特定类型的结构的操作写成独立的函数。这里给出几个例子说明怎样编写这样的辅助函数:
##### 打印书籍详情
```c
void printBookDetails(struct book *b) {
printf("ID: %d\nTitle: %s\nAuthor: %s\nPrice: %.2f\n",
b->id,
b->title,
b->author,
b->price);
}
```
此函数接受一个指向`book`结构的指针作为输入,并打印该书中存储的信息。注意这里的箭头运算符(`->`)用于间接引用指针所指向的对象内的字段[^2]。
##### 更新书籍价格
如果想要修改某个具体实例的价格,则可创建如下更新方法:
```c
void updateBookPrice(struct book *b, double new_price) {
if (new_price >= 0) {
b->price = new_price;
}
}
```
这段代码展示了当传入的有效正值时才会更改图书的价格。
#### 调用上述函数
最后,在主程序或其他地方就可以像这样使用之前定义好的功能了:
```c
int main() {
struct book myLibrary = {100010, "Tom and Jerry", "Unknown", 8.5};
printBookDetails(&myLibrary);
updateBookPrice(&myLibrary, 9.99);
printBookDetails(&myLibrary);
return 0;
}
```
在这个简单的例子中,先创建了一个名为`myLibrary`的新书记录并设置了初始值;接着两次调用了`printBookDetails()`显示当前状态;中间还调用了`updateBookPrice()`调整售价[^4]。
阅读全文