學習的境界

2021-06-06 03:10:02 字數 1007 閱讀 7419

學習是有境界的,下面以c語言中的結構型為例簡單分析。

第一種境界:理解了。

結構型是自定義資料型別,與c語言中基本的資料型別如int的作用相同,用於定義變數。(變數是記憶體中儲存單元的標識,c語言中通過變數使用計算機的記憶體。)

結構型只是通過對已有資料型別的組合產生的新的型別。定義乙個結構型的變數,實際上是定義了多個基本的變數,但這些變數屬於乙個集體。

結構型可以做引數,也可以有結構型指標變數,但是因為結構型變數僅是乙個代表,包括了多個變數,使用時(輸入輸出、參與多種運算時)必須具體到成員變數。

在定義結構型時可以包含指向自身的指標型別。構成鍊錶的多個結構型變數在邏輯上就有了先後順序,並且可以用迴圈處理了。

第二種境界:比較了。

結構型與陣列相似。

陣列是大家比較熟悉的資料型別,也用於定義變數。

陣列也是通過對已有資料型別的組合產生的新的型別。定義乙個陣列變數,實際上也是定義了多個變數,這些變數屬於陣列這個集體。陣列元素的型別相同,而結構型成員變數的型別可以任意。

陣列做引數時會退化為指標型別。兩個陣列變數之間不能相互賦值,而兩個結構型變數之間卻可以,即使結構型的成員變數有陣列。陣列在使用時也必須具體到陣列元素。

結構型中可以有陣列,陣列的型別可以為結構型。

第三種境界:思考了。

陣列變數之間為何不能相互賦值,而兩個結構型變數之間卻可以?

陣列變數之間相互賦值在技術上沒有任何問題,因為兩個結構型變數之間就可以相互賦值。陣列間不能相互賦值是在設計c語言時基於某種考量而故意為之的。問題變成了,c語言中為何這樣設計呢?

這樣做有什麼好處呢?

效率高。陣列做引數時退化為指標型別,原本要傳遞的大量資料現在只需傳遞幾個位元組的資料就可以了,既高效又省空間。

另外,即使同樣為整型陣列,但長度可能不同,要保證兩個陣列相互賦值時不出錯也太累了。

陣列與結構型本質上不同。

陣列算作資料結構,所屬元素在邏輯上有次序關係,可以用迴圈依次處理各個元素。

結構型只是多個資料的包裝,所屬成員僅表示同屬乙個集合,沒有次序關係。

學習的境界

前幾天聽乙個講座,主講老師將個人能力大致分為三個層次 第一層次 學習前人的知識,培養自學能力 第二個層次,靈活運用所學知識 第三個層次 創造解決問題的方法。這樣的分類和我自己的一些感受頗為相似,但我卻沒能向老師這樣分得這麼清楚。記得小時候,包括從初中一直到高中,每次看到一些感到無法完成的事情就感到特...

學習的境界

學習是有境界的,下面以c語言中的結構型為例簡單分析。第一種境界 理解了。結構型是自定義資料型別,與c語言中基本的資料型別如int的作用相同,用於定義變數。變數是記憶體中儲存單元的標識,c語言中通過變數使用計算機的記憶體。結構型只是通過對已有資料型別的組合產生的新的型別。定義乙個結構型的變數,實際上是...

學習的境界

孔子曾跟師襄學琴,師襄就隨手扔給他一首曲子,讓他自已練習。孔子呢,把這首曲子都練了十幾天,還是不厭其煩地繼續練習。師襄忍不住了,對孔子說 你可以再換個曲子練習了。為了玩刀而上戰場的人大都死於刀下,臨死時怪自己的刀沒有選好。為了殺人而上戰場的人大都成了將軍,臨死時放下屠刀立地成佛了。所以,程式設計師要...