红袖读书_好看的小说免费阅读 - 阅文集团旗下网站

首頁 現實

程序媛養成計劃

第五十三章 尾聲(一)

程序媛養成計劃 任煦之秋 2082 2020-05-26 22:34:05

  通過講解main函數,我基本上知道了指針數組的用法了。

  「還記不得記得我們在講二維數組的時候,我說二維數組其實是一個一維數組,不過這個一維數組的元素也是一維數組。在說到為其賦值時,你問我可不可以將數組賦值給二維數組的元素,我說按照正規操作是不行的,但是咱么借助指針數組就可以實現。

  在講指針和數組的用法時,我們已經知道了,指針是可以指向一個一維數組的,那么如果是一個指針數組,自然就可以表示一個二維數組了。

  int* p[3];

  int a0[]={0, 1, 2, 3, 4};

  int a1[]={5, 6, 7, 8};

  int a2[]={9, 10, 11};

  p[0]= a0;

  p[1]= a1;

  p[2]= a2;」

  「啥,這些一維數組的長度還可以不一樣啊?」

  「這是因為指針數組里面真的就只是存放了一維數組的指針地址,而數組的長度對于數組的指針地址沒有影響。

  但需要注意的是,每個元素指向的是一個真實存在的一維數組,所以在遍歷的時候要考慮數組越界的問題。

  指針數組咱們就差不多講完了,接下來就剩最后一點內容,多重指針。今天上午已經講了這么久了,咱們先休息一下,等到下午咱們爭取把結構體和枚舉說一下,最后再簡單地過一遍文件指針,那么C語言的基礎知識咱們就算是學習完了。」

  說到此處,老爹徐徐吐出一口氣。

  從第一天開始學習C語言,到現在已經過去了40多個日日夜夜,這突然要結束了,心里突然有種空出一塊的感覺。

  吃了午飯后,我和老爹都習慣性躺在床上小瞇了一會兒,小弦子就只能睡沙發了。

  午休之后,老爹便如約開始講多重指針。所謂的多重指針,就是指針里面放指針,這一點和多維數組倒是有些相似。指針變量和其他變量一樣,都要存放在內存中,既然如此,就會有地址。

  如果把指針變量A的地址取出來,賦值給另外一種數據類型聲明的變量B,這種數據類型就叫做二重指針。以此類推,如果再把B的地址取出來賦值給另外一種數據類型聲明的變量C,那么C的數據類型就叫做三重指針……

  以上過程用代碼表示:

  int a = 0;

  int* p =&a;

  int** q =&p;

  int*** r =&q;

  ……

  在取值的時候:

  *r代表的是q

  **r 代表的是p

  ***r 代表的是a

  老爹說二重指針除了用來考試或者面試,一般都極少看到。自此,和指針相關的知識就算是講解完了。

  相比其他知識點,指針的內容的確是多了很多。不僅體現在時間上,也體現子在老爹寫的教學大綱上。從用時來說,以往的知識點從來都不會超過兩個小時,而指針確實足足用了一上午都沒有講完!

  從老爹教學大綱的篇幅上來說,指針部分的內容也是其他內容篇幅的兩倍多。

  「什么是枚舉呢?所謂的枚舉,就是將一個變量可能的值一一列舉出來。比如說一周有七天,如果我們用一個變量的來表示一周中的某一天,那么它的可能值就是星期一到星期日。

  同樣,用一個變量來表示月份的話,它的可能值就是一月到十二月。

  如果我們要表示星期和月份的話,就可以使用枚舉。

  定義枚舉的格式很簡單:

  enum

  {

  Sunday = 0,

  Monday,

  Tuesday,

  Wednesday,

  Thursday,

  Friday,

  Saturday,

  } Week;

  你們看,這就定義了一個星期的枚舉類型,我們只指定了Sunday的值為0,后面的如果不指定,編譯器會自動為其賦值為前一個值加一,所以Monday為1……Saturday為6。

  當然了,我們也可以顯式為所有字段都指定值,只需要保證每個字段的字不重復就可以了。」

  「可是老爹,這樣做有什么意義么?我們完全可以直接用數字0到6來表示一周啊。」

  「的確是這樣,但是你考慮到這個問題沒有,不同的人定義的習慣可能不一樣。比如說我們中國人數數習慣從1開始,那么有可能用1到7來分別表示星期一到星期天。

  但是在程序的世界里,一切都是從0開始的,那么也有很多人像我剛才一樣,使用0到6分別表示星期天到星期六。

  如果時間太久了,我們可能就會忘記到底是使用哪種方式來表示的了,況且數字在使用的時候可讀性也比較差。

  但若是使用枚舉,這些問題都迎刃而解了。我們要使用星期幾,只需要使用它的英文名稱就好了。不僅不會混亂,而且見名知意。」

  「那也不一定非得使用這啊,我們還是可以定義常量,使用起來也比較方便啊。」

  我很是不服氣地說道。

  「是的,其實在枚舉剛出來的時候,很多人也跟你一樣,畢竟習慣了使用定義常量的方式,但是后來就慢慢地接受了這種方式。

  你非得要使用常量來定義,也沒錯,但是有些不合群。

  這就好比大夏天其他人都穿著T恤,而你卻穿著大紅色羽絨服到處跑,別人也不能把你怎么樣,畢竟不違法亂紀,也沒有影響別人。所以自然不會有人把你攔住,非要你把羽絨服脫下來。

  其他人只會在背后悄悄議論,說你怎樣怎樣。

  寫程序也是一樣的,畢竟真正開發的時候代碼不會只交給一個人來寫或者維護。所以在寫代碼的時候就需要注意一些,不能太特立獨行,最好還是采用大家都能夠接受的風格。

  吶,定義了枚舉,我們就需要使用它。

  枚舉和其他數據類型一樣,可以定義變量,只不過變量的值只能是定義的字段。例如:

  enum week w = Friday;

  或者定義在函數的形式參數上:

  String weekToString(enum Week weekday)

  {

  switch (weekday)

  {

  case Sunday:

  return “星期天“;

  case Monday:

  return “星期一“;

  case Tuesday:

  return “星期二“;

  case Wednesday:

  return “星期三“;

  case Thursday:

  return “星期四“;

  case Friday:

  return “星期五“;

  case Saturday:

  return “星期六“;

  default:

  return “錯誤“;

  }

  }

  通過這兩個例子可以看出,我們在聲明一個枚舉變量的時候,還需要加上一個enum關鍵字,看上去有些多余。

  要解決這個問題,還是需要請typedef它老人家出馬。如果在定義枚舉的時候加上typedef,聲明枚舉變量的時候就不需要再使用enum關鍵字了:

  typedef enum

  {

  Sunday = 0,

  ……

  } Week;

  聲明變量:

  week w = Friday;

  String weekToString(Week weekday);」

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設置
設置
書架
加入書架
書頁
返回書頁
指南
主站蜘蛛池模板: 浮梁縣| 公安縣| 甘孜| 上杭縣| 開原市| 大悟縣| 洛浦縣| 西青區| 武夷山市| 曲水縣| 米林縣| 乃東縣| 鹽源縣| 鎮坪縣| 博愛縣| 尼勒克縣| 薩迦縣| 伊寧市| 西烏珠穆沁旗| 甕安縣| 寶雞市| 臨湘市| 臺中縣| 清原| 水富縣| 廣東省| 撫州市| 鄂托克前旗| 安慶市| 建昌縣| 貞豐縣| 常德市| 阿克| 旬邑縣| 雙峰縣| 高碑店市| 西盟| 遼寧省| 梧州市| 托克遜縣| 平潭縣| 另类视频区第一页| 亚洲欧美校园春色| 男女激烈试看120秒动态图| 国产一级视频播放| 精品成人一区二区三区四区| 四虎国产永久免费久久| 疯狂做受xxxx高潮不断| 免费国产不卡午夜福在线| 熟女老女人的网站| 人人妻人人澡人人爽欧美一区双| 激情综合色综合久久综合| 人人澡人人澡人人看| 欧美最猛黑人xxxx黑人猛交98| 亚洲欧美成人一区二区三区| 李丽珍蜜桃成熟时电影在线播放观看 | 国产成人免费a在线视频色戒| 黄色大片在线观看| 国产真实乱人偷精品| 5g996未满十八| 国产精品va在线观看无码| 黄色网址免费观看| 国产欧美一区二区三区免费| **网站欧美大片在线观看| 国产精品一级片| 韩国免费高清一级毛片性色| 国产成人女人视频在线观看| 蜜臀精品国产高清在线观看| 国产一国产一区秋霞在线观看 | 精品福利一区二区免费视频| 北条麻妃在线观看视频| 毛片大全免费观看| 亚洲大成色www永久网址| 日韩精品极品视频在线观看免费| 久久精品亚洲日本佐佐木明希| 日韩午夜免费论理电影网| 亚洲人成色7777在线观看不卡 | 好湿好紧好痛a级是免费视频| 三年片免费高清版| 在线观看特色大片免费网站| av天堂午夜精品一区二区三区| 国产色在线观看|