ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
现在假设我们要创建一个结构体来表示一个矩形。问题在于,我需要提供哪些信息来指定一个矩形?为了简化问题,我们假设矩形是垂直方向或水平方向的,没有倾斜角度。 存在几种可能:我可以指定矩形的中心(两个坐标)和大小(宽度和高度),我也可以指定矩形的一个角和矩形的大小,或是指定两个相对的角。 现有程序中最常见的选择是指定矩形的左上角和大小。在C++中,我们定义一个结构,包含着一个Point类型和两个double类型。 ~~~ struct Rectangle { Point corner; double width, height; }; ~~~ 注意到一个结构中可以包含另一个结构。事实上这种情况很常见。当然,这意味着为了创建一个Rectangle,我们得先创建一个Point: ~~~ Point corner = { 0.0, 0.0 }; Rectangle box = { corner, 100.0, 200.0 }; ~~~ 这段代码创建了一个新的Rectangle结构并对实例变量进行了初始化。下图展示了这些语句的效果。 ![enter image description here](https://box.kancloud.cn/2015-09-01_55e599b2cc521.jpg) 我们可以用普通的方式来存取width和height: ~~~ box.width += 50.0; cout << box.height << endl; ~~~ 为了访问corner的实例变量,我们使用了一个临时变量: ~~~ Point temp = box.corner; double x = temp.x; ~~~ 或者我们可以把两条语句组合在一起: ~~~ double x = box.corner.x; ~~~ 这条语句最好是从右向左读: "从box的corner中抽取x,然后把它赋给局部变量x。" 当我们谈到组合时,我必须指出,实际上你可以同时创建Point和Rectangle: ~~~ Rectangle box = { { 0.0, 0.0 }, 100.0, 200.0 }; ~~~ 最里面的大括号中是点corner的坐标;它们组成了新的Regtangle中三个值中的第一个。这条语句是嵌套结构的一个例子。