回顾:点管理器
本课属于 Coddy C 学习旅程的“面向对象编程”单元。第 11 课,共 61 课。
挑战
简单我们来构建一个完整的 Point 模块,用于管理二维坐标。这个复习挑战会综合运用你学过的知识,了解如何把结构体当作对象使用:通过指针修改状态,并使用 const 指针执行只读操作。
你需要创建三个文件:
point.h:声明一个包含两个整数成员的Point结构体:x和y。还要声明两个充当方法的函数:point_move:接收一个指向 Point 的指针和两个整数(dx和dy),将这两个值分别加到x和y上,从而移动点的位置point_print:接收一个指向 Point 的const指针,并显示它的坐标(此函数不应修改该点)
POINT_H添加包含保护。point.c:实现这两个函数。仔细考虑哪个函数需要使用普通指针来修改点,哪个函数使用const指针来安全地读取点而不进行修改。main.c:创建一个 Point,移动它,并显示它在不同阶段的位置。
你会收到 4 个整数输入:初始 x、初始 y、dx 值(水平移动的距离)和 dy 值(垂直移动的距离)。
在主文件中,使用起始坐标初始化一个 Point,打印它的初始位置,按给定的距离移动它,然后打印它的新位置。
point_print 函数应按以下格式输出:
Point: ({x}, {y})例如,输入 3、5、2 和 -1 时,输出为:
Point: (3, 5)
Point: (5, 4)亲手试试
#include <stdio.h>
#include "point.h"
int main() {
// 读取输入值
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO:创建一个初始坐标为 (x, y) 的 Point
// TODO:使用 point_print 输出初始位置
// TODO:使用 point_move 将点移动 (dx, dy)
// TODO:使用 point_print 输出新位置
return 0;
}
面向对象编程中的所有课
自己练习: C 在线编译器