如果我希望把求矩形面积的函数加入矩形的结构体中,并通过结构体引用他,改怎么改
时间: 2024-04-08 18:34:31 浏览: 106
如果希望将求矩形面积的函数作为结构的成员函数,并通过结构体引用调用它,可以使用函数指针来实。以下是修改后的代码:
```C
#include <stdio.h>
// 定义基类 Shape
typedef struct {
int x;
int y;
} Shape;
// 定义派生类 Rectangle
typedef struct {
Shape shape; // 继承基类 Shape
int length;
int width;
int (*getArea)(struct Rectangle* rect);
} Rectangle;
// 计算矩形面积
int getRectangleArea(struct Rectangle* rect) {
return rect->length * rect->width;
}
int main() {
Rectangle rect;
// 输入矩形的长和宽
printf("请输入矩形的长和宽:");
scanf("%d%d", &rect.length, &rect.width);
rect.getArea = getRectangleArea;
printf("矩形的面积为:%d\n", rect.getArea(&rect));
return 0;
}
```
在修改后的代码中,将 `getArea` 函数指针添加到 `Rectangle` 结构体中,它接受一个指向 `Rectangle` 结构体的指针作为参数,并返回矩形的面积。在 `main` 函数中,先输入矩形的长和宽,然后将 `getArea` 成员指针赋值为 `getRectangleArea` 函数。最后,通过结构体引用来调用 `getArea` 函数并输出矩形的面积。
阅读全文