你可能遇過,有人來問你 C 語言的指標該怎麼搞懂,你開始問他學指標要幹嘛,搞了半天他只是想學做網站。要是他一開始直接問怎麼做網站,可能會簡單很多。

這篇不是在討論二元一次方程式,也不是在討論 XY 染色體問題。

什麼是 X-Y 問題

X-Y 問題(The X-Y Problem)是指你向別人詢問你嘗試的 解法,而不是真正的 問題

所謂 X-Y 問題通常是這種狀況:

  • 我想解決 X 問題。
  • 我認為 Y 是可能的解法。
  • 但我也不知道 Y 怎麼做,所以我去詢問 Y 該怎麼做。

來舉個例子。

小明:為什麼 C 語言的指標那麼難懂?
阿霖:你知道 *& 怎麼用嗎?
小明:不知道,我才剛學會迴圈而已。
阿霖:那慢慢來啊,不會指標也沒關係。你想做什麼?
小明:我想做網頁。
阿霖:那你怎麼會跑去學 C?
小明:聽說 C 語言是寫程式的基礎,先學 C 比較好。
阿霖:呃,沒有人寫網頁先學 C 的吧?

整理一下上面的情境,小明想學做網站,但小明認為要先學 C 語言才能學好程式,所以他跑去詢問 C 語言怎麼寫。

  • X 問題:怎麼學做網站
  • Y 問題:怎麼寫 C 語言

如何避免 X-Y 問題

X-Y 問題在日常生活中經常發生,在學寫程式的時候也常遇到。

要避免 X-Y 問題的話,向別人問問題的時候,盡量多提供一點資訊,和你已經嘗試的解法;當別人提出一個你已經嘗試過的解法,可以講出你怎麼嘗試和遇到的問題。也許你們可以一起想出新的辦法。

如果你真的很想搞懂 *& 在 C 語言指標中的意義,可以看看 資料結構筆記(二):陣列、字串與指標

延伸閱讀