C++ 使用結(jié)構(gòu)體表示矩形

2023-03-20 15:57 更新

現(xiàn)在假設(shè)我們要?jiǎng)?chuàng)建一個(gè)結(jié)構(gòu)體來(lái)表示一個(gè)矩形。問(wèn)題在于,我需要提供哪些信息來(lái)指定一個(gè)矩形?為了簡(jiǎn)化問(wèn)題,我們假設(shè)矩形是垂直方向或水平方向的,沒(méi)有傾斜角度。

存在幾種可能:我可以指定矩形的中心(兩個(gè)坐標(biāo))和大小(寬度和高度),我也可以指定矩形的一個(gè)角和矩形的大小,或是指定兩個(gè)相對(duì)的角。

現(xiàn)有程序中最常見(jiàn)的選擇是指定矩形的左上角和大小。在C++中,我們定義一個(gè)結(jié)構(gòu),包含著一個(gè)Point類型和兩個(gè)double類型。

struct Rectangle {
  Point corner;
  double width, height;
};

注意到一個(gè)結(jié)構(gòu)中可以包含另一個(gè)結(jié)構(gòu)。事實(shí)上這種情況很常見(jiàn)。當(dāng)然,這意味著為了創(chuàng)建一個(gè)Rectangle,我們得先創(chuàng)建一個(gè)Point:

Point corner = { 0.0, 0.0 };
Rectangle box = { corner, 100.0, 200.0 };

這段代碼創(chuàng)建了一個(gè)新的Rectangle結(jié)構(gòu)并對(duì)實(shí)例變量進(jìn)行了初始化。下圖展示了這些語(yǔ)句的效果。

enter image description here

我們可以用普通的方式來(lái)存取width和height:

box.width += 50.0;
cout << box.height << endl;

為了訪問(wèn)corner的實(shí)例變量,我們使用了一個(gè)臨時(shí)變量:

Point temp = box.corner;
double x = temp.x;

或者我們可以把兩條語(yǔ)句組合在一起:

double x = box.corner.x;

這條語(yǔ)句最好是從右向左讀: "從box的corner中抽取x,然后把它賦給局部變量x。"

當(dāng)我們談到組合時(shí),我必須指出,實(shí)際上你可以同時(shí)創(chuàng)建Point和Rectangle:

Rectangle box = { { 0.0, 0.0 }, 100.0, 200.0 };

最里面的大括號(hào)中是點(diǎn)corner的坐標(biāo);它們組成了新的Regtangle中三個(gè)值中的第一個(gè)。這條語(yǔ)句是嵌套結(jié)構(gòu)的一個(gè)例子。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)