C語言學習之 數組,指針,字符串. (三)

保持一向的風格, 進入正題以前,先寫一段廢話. 編程

寫點東西是件輕鬆的事, 我從未將寫內容看成是一種負擔. 可是生活中總有一些事情會擾亂心神. 我是說我以前想把一篇內容寫全,寫豐富完整事實上我寫的很短. 固然我知道不少內容都只是站在一個主觀的角度去理解C. 固然裏面也會是錯誤百出.不管怎樣,它記錄了我當時的學習進度,表明當前狀態以及對C這門語言的理解程度. 或許之後重讀舊文的時候,會認爲本身是多麼的無知. 更重要的是,我以爲文字能記錄本身當時的情景. 
 思緒老是很亂, 不少時候我都是在寫着寫着,而後有了思路,就知道該如何去作, 不少事情也是. 但願這篇也會慢慢進入狀態.我以爲有點混亂了. 內容穿插不起來,造成不了主線. 不管結果怎樣, 保持一種陣型好了. "趕快去作". 數組

上篇內容主要給出的仍是一個小例子, 以前也有提過, 主要是關於 typedef , 類型, 數組的本質, 經過指針訪問數組. 期間仍是一個小魔法. 用一個指定的類型指針指向一個數組. 經過這個指針訪問數組的內容.  這種方式是一種魔法, 可是在C裏面很管用.C裏面處處都用獲得.  透過表象理解本質最重要. 數組訪問方式只是指針訪問的一種很人性化的方式而已. 咱們不該該害怕它. 相反.咱們更好的利用它.   數據結構

計算機的本質是數字計算機. 要是深究起來, 一切都是數字,  說到編程. 機器語言是最直接的方式. 可咱們沒有必要任何事情都用機器語言來操做機器,C語言就是讓人讀的, 寫的程序恰巧可讓機器運行. 因此裏面的一些概念用一些更人性化的方式來表述.
 好的代碼在排除了基本功能,讓機器能運行以外. 保證使用它的人能讀懂也是很重要的一條.  C語言在這方面把握的很到位. 既有低級語言的特性, 有不缺少高舉語言的表示形式. 咱們學習它,就應該學習它的優勢, 儘可能避免它的缺點,儘量寫出更人性化的,更易懂的代碼.   C語言裏字符串的形式就很是的有意思. 有一些很常見的關於字符串的形式.  也很人性化.
char a[]="hello world!";
const char *a="hello world!":
第一種是標準的方式, 第二種, 會初始化一個指針a 並將 字符串的地址放進去a裏面. 不少工做都被 程序代替了. 人要作的相對少不少. 學習

以前提到過 typedef ,  其實 typedef 的應用不少不少.  結構化方面, 它的功勞不容忽視.
還記得char short int long 這些內容嗎? 都是類型.用來修飾變量的. 變量都佔有存儲空間, 空間的大小就是根據 這些決定的.  C 在這方面也作頗有人性化, 服務很到位. 它有 其它 概念來服務.這些複雜的內容. 結構 struct, 聯合 union, 枚舉 enum. 這些數據類型都頗有意思.  若是和 typedef 配合使用 就能夠方便的 用本身定義的數據類型來講明代碼,使之更容易理解.
struct stu_a { char x;}; struct stu_a val; 和 struct stu_a{char x;}  val;的方式是同樣的.
更好的方式是利用 typedef struct {char x;} STR_A ; STR_A val; 這樣的方式會有一個 自定義類型 STR_A 卻不會產生 像前兩個 stu_a 結構名.  指針

在  struct stu_a {char x;} ; 語句中, 說明的只是有一個 結構,名字是 stu_a;  若是以後 用語句 stu_a val; 試圖聲明一個變量是會出錯的. stu_a 只是一個結構的名字.  可是若是加上  typedef struct stu_a stu_a; 後, stu_a 就能夠做爲一個類型了. 此時 若是用 stu_a val ; 那麼 stu_a 就是一個 類型名; 若是用 struct stu_a val; 那麼 stu_a 就是一個結構名.  有了typedef的存在, C語言變得很人性化.事情都簡單多了.  這些都很靈活. 怎麼應用, 仍是看每一個人的習慣. 字符串

在數組,指針,字符串裏面穿插這些介紹. 也不是毫無目的. 數學

這些內容都是基本的概念, 在應用中.不必去探究那麼難懂的細節. 咱們的目的只有一個,寫出邏輯清晰,結構簡單的表達準確的代碼.  以上這些只是爲了這個目的存在的.  然咱們儘可能去迴避那些讓人摸不透的東西. 讓咱們用數組的東西去處理那些有相似行爲的變量. 而不是用指針. 例子中指針只是讓咱們更好的去了解數組的本質. 在應用中. 仍是用人性化的東西比較好. 指針是神奇的魔法. 它能的目的不是擾亂咱們的思路. 它應該爲 簡化問題 這個目的存在的. io

其實這個草稿我都寫好有些日子了.一直存放在草稿箱裏. 本來準備貼點實用的例子, 後來發現那不現實. 那樣會讓文章用無結束. 例子是應用程序的話,一切應用均可以再好點.  這些例子不該該是用來秀的. 編譯

數組,指針,字符串. 重點仍是受指針. C語言裏.指針是個很是優美的東西. 指針 是有名字的. 指針又存儲空間, 指針存儲空間裏存放的是一個地址. 聲明的時候 能夠 初始化這個指針, 聲明的類型 能夠是強制轉換的. 能夠增長對指針變來那個增長 const 來限制 指針不可更改,也能夠限制 指向的內容不可更改.  指針操做時本質, 數組形式是咱們人性化的操做方式. 若是有選擇,咱們應該習慣用數組方式, 用數字下標來訪問內容. 可是瞭解指針的本質能讓咱們更好的利用指針實現相似於數組的方式訪問內容. 變量

結構, 類型,  很很差敘述清楚的東西. 結構,聯合, 這些能夠認爲是一種存儲方方式的定製,   typedef 能夠理解成用來定義類型的. 每一種類型 都有本身的存儲方式. 結構以及聯合屬於混了型機構. 能夠定義個各類結構,  變量 聲明的時候須要的是類型, 類型不只有結構,還有存儲位置,編譯連接後造成最終可執行文件過程當中. 會留給已經聲明的變量存儲空間的.  可是類型卻不必定有存儲空間.

數據結構. 編程的目的是解決實際問題. 用數學的方式來處理問題, 是一種抽象的概念.
現實生活中會有不少相關的內容, 不止有數字,字符串, 相關的內容有組織的放在一塊兒會造成數組形式.

好吧,就這樣停住吧. 

相關文章
相關標籤/搜索