最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

第 11 講:數(shù)組

2021-09-05 19:42 作者:SunnieShine  | 我要投稿

數(shù)組是什么?

在前文的知識點里,我們描述了很多有關重復性的內(nèi)容,例如 C 語言提供的三大循環(huán)語句:whiledo-whilefor 循環(huán),還談論了 for 的各種“奇葩”用法。今天要講的重復性內(nèi)容,并非針對執(zhí)行操作,而是針對于數(shù)值存儲。

試想一下,如果我們需要大量信息,而且它們需要的內(nèi)容的類型近乎一致。比如我們要存儲 50 個學生的數(shù)學成績,如果我們單純使用 50 個變量的話,顯然是不好讀也不好取。那么,有沒有辦法解決呢?有,這便是我們今天要說到的新的知識點:數(shù)組(Array)。


數(shù)組的定義

數(shù)組有類型(Type)一說,有維度(Rank)一說,也有長度(Length)一說,這是在初始定義的時候為其決定的,這類似于變量的定義。語法約定是這樣的:

這樣便定義了一個數(shù)組(有時候也把數(shù)組直接叫做數(shù)組變量),這個數(shù)組一共存放 50 個元素,且全部都是 int 類型的元素。

數(shù)組一共具有三大屬性:類型、維度和長度,那么針對于這個數(shù)組變量而言,它的類型是 int,維度是一維的,而長度是 50(即總元素個數(shù))。所謂的維度,就是數(shù)組整體呈現(xiàn)幾個維度的形式。我們今天講的內(nèi)容都是一維數(shù)組,即只有一個維度。


數(shù)組的賦值

數(shù)組賦值有兩種操作,一種是自定義數(shù)據(jù),在初始化的方式賦值,還有一種是后續(xù)賦值,后續(xù)賦值就需要借助循環(huán)語句來實現(xiàn),因為它是采用的逐個元素的賦值的邏輯。


初始化賦值

初始化賦值方式是在定義語句上直接使用賦值符號 = 和一個大括號表示的集合序列來賦值的。

下面為了簡化賦值,這里把 50 個元素更改為 10 個元素的數(shù)組,進行賦值。

這樣的賦值操作是逐個對應的。這個 scores 數(shù)組的第一個元素數(shù)值是 1,第二個元素是 2,第三個是 4,第四個是 8,以此類推。

如果你賦值的數(shù)值過多,編譯器層面就會報錯,提示你不遵循語法規(guī)則,exe 的文件都不會讓你成功生成。

不過,元素如果不夠 10 個的話,賦值是成功的,也是不會出錯的,但是剩余的元素都會被默認賦值為 0。

這表示 scores 數(shù)組里最后 6 個元素全部為 0。

但請注意。如果初始化不給出大括號的賦值語句,這個數(shù)組就是空的,即沒有賦值的狀態(tài)。如果在沒有初始化的情況就在使用這個數(shù)組的話,就會容易出現(xiàn)程序崩潰的錯誤。所以請盡量避免這個操作。

如果你想把數(shù)組全部賦值為 0,可以采用下面兩種方式賦值:

這是第一種賦值方式,小括號第一個部分寫上數(shù)組名稱,第二個部分寫上賦值的初始值(這里是 0,其它數(shù)值需要非常復雜的轉(zhuǎn)換得到,這里不作出講解),第三個部分寫上數(shù)組整體占的內(nèi)存大小。

第二種是用大括號這種熟悉的方式賦值,只需要在大括號里寫一個元素 0 即可。

這樣就可以了,因為其它沒有賦值的部分都會默認賦值為 0,而此時給了第一個元素也賦值為 0,所以相當于就是全部為 0 了。

在明確賦值元素足夠的時候,中括號里的數(shù)值可以不寫。比如

?int scores[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 };

就等價于

?int scores[10] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 };

中括號里的數(shù)值,就等于后面大括號里元素的總個數(shù) 10 個。

后續(xù)賦值

你也可以借用循環(huán)語句賦值,但需要講解存取數(shù)組的元素的語法才可以?,F(xiàn)在我們來說一下,如何取出數(shù)組里的元素,和修改這些元素的值。


數(shù)組初始化的長度是否可以用變量表示?

思考一個問題。我們是否可以用一個變量來表示數(shù)組的長度呢?

這么書寫,是否表示輸入的數(shù)值是多少,數(shù)組初始化的時候長度就是多少呢?

在 C99 標準之前,這種寫法一直都是不被允許的。在考試過程時,一般也不允許這種寫法,不過 C99 標準開始允許你這么聲明數(shù)組,即可變長數(shù)組(Variable Length Array,簡稱 VLA)。VLA 這種特性是在 C99 標準才引入的,所以如果你需要使用 VLA,考試里則是肯定不允許的。


數(shù)組內(nèi)元素的存取

前文講述了如何使用數(shù)組進行定義和初始化,它采用的是中括號的方式,寫在數(shù)組名稱的后面,中括號里寫上總元素個數(shù)來表達。

在存取元素的時候,我們依舊用的是中括號,而且稍微在使用上和初始化里的中括號有一點區(qū)別:

我們要取出上述第三個元素的話,請使用 [第幾個元素 - 1] 的方式來取值。

在 C 語言里,取值是從 0 開始的,并非 1 開始,所以需要你注意數(shù)組取值的時候,中括號里寫的數(shù)值是多少。比如取出第三個元素,則寫的是 array[2],而非 array[3]

那么,整體使用的格式是這樣的:

這個程序?qū)敵?96。

下面就可以說下后續(xù)賦值的方式了。

由于我們學習了循環(huán)語句,所以我們可以采用方便 for 循環(huán)為其賦值。

請注意,數(shù)組賦值用到了 for 循環(huán),而我們之前說過,取值的中括號里寫的數(shù)字是從 0 開始算的,所以最大的元素值是 9(因為 0 到 9 一共是 10 個元素了),所以初始化賦值的時候 i = 0 而不是 i = 1,因為這個 i 就是表示這個中括號里的數(shù)值的;而條件寫的是 i < 10 而不是 i <= 10。

而上述邏輯里的 arr[i] 就表示 arr 數(shù)組的第 i + 1 個元素。比如 i 是 6,則 arr[i] 就表示的是第七個元素,因為從 0 開始計算。而最終執(zhí)行完畢這個 for 后,整個數(shù)組的數(shù)值就是 1、2、3、4、5、6、7、8、9、10 了。

當然,你還可以為其進行手動賦值:

這樣就可以為這個數(shù)組的第 2、7、10 個元素賦值 3、8 和 14,而其余元素的數(shù)值都會被默認初始化為 0。

第 11 講:數(shù)組的評論 (共 條)

分享到微博請遵守國家法律
丹棱县| 新蔡县| 宁远县| 利津县| 黑山县| 封开县| 高唐县| 木兰县| 宣汉县| 永平县| 南城县| 法库县| 蕲春县| 石狮市| 乐平市| 宜春市| 错那县| 远安县| 中西区| 区。| 九龙县| 舞阳县| 咸丰县| 兰西县| 调兵山市| 天峨县| 海城市| 日土县| 库尔勒市| 吐鲁番市| 治多县| 新乐市| 罗江县| 洪湖市| 青田县| 北京市| 神木县| 柘城县| 聂荣县| 和硕县| 枝江市|