C語言基礎 陣列與字串

2021-08-15 16:54:37 字數 2673 閱讀 9657

一、陣列變數

在上一節中我們學習了如何定義變數,例如定義一月的最多天數為31,則定義int max = 31;即可。但是如果我們有很多個變數需要定義,例如從一月到十二月的最大天數不盡相同,我們就需要定義12個變數,用於存放這些數值。在c語言中提供了乙個方便定義同型別多個變數的方式,叫做陣列。我們來看一下定義陣列的**:

int days[12] = ;

最左側的int仍然表示的是變數的型別是乙個整數,days表示的是這個變數的名字,days右側的一對中括號[ ]中的數值表示這個變數是乙個陣列,長度為12,也就是說它有12個型別相同的變數放在一起。再右側的等號=表示對這個陣列初始化值,再右側表示這個陣列中每乙個元素的值,其實就是將這些值通過等號=賦值給這個陣列中的變數中。

我們可以使用變數名[下標]的方式來使用陣列中的某乙個元素,下標是從0開始的整數。例如下面**顯示了一月、二月和三月的天數:

printf("%2d %2d %2d\n", days[0], days[0], days[1]);

31 28 31

就是說陣列其實是一組變數,只不過在定義時用乙個變數名來定義,使用時也用乙個變數名來使用,通過中括號中的下標來使用不用的變數。

接下來我們來編寫乙個可以顯示12個月天數的程式(不考慮閏年的情況):

#include main()

; int month = 0;

while (month < 12) }

1 / 31

2 / 28

3 / 31

4 / 30

5 / 31

6 / 30

7 / 31

8 / 31

9 / 30

10 / 31

11 / 30

12 / 31

我們來分析一下上面的程式,首先我們定義了乙個具有12個int型元素的陣列變數days,並為它們賦與了12個月份的天數。然後又定義了另乙個月份的變數month,用於記錄月份,需要注意的是我們需要用這個變數作為陣列days的下標,用於在迴圈中顯示陣列中所有元素的值,由於陣列的下標是從0開始的,所以month的初始值為0,每迴圈一次month的值在原有的基礎上加1,但是為了讓month顯示成1~12而不是0~11,所以在printf函式中我們讓其第乙個引數顯示為month + 1。

二、字元與字串

下面我們來介紹另一種型別的變數char,這是乙個字元型變數,也就是說它可以存放乙個字元,使用等號=為其賦值時字元用單引號括起來。

printf函式顯示需要用%c字元型變數

char a = 'a';

char b = 'b';

printf("%c %c\n", a, b);

a = 'a';

b = 'b';

printf("%c %c\n", a, b);

a ba b

現在我們可以定義了字元型變數,下面我們想這樣乙個問題,如何來定義乙個字元陣列變數呢?我們首先能想到的就是用陣列來定義,例如:

char string[5] = ;

然後再通過迴圈的方式用printf將這個陣列的內容顯示出來,這樣做沒有問題,但有一些麻煩。c語言中提供了另一種字元陣列,也就是字串的存放方式,直接用雙引號來定義,在printf中使用%s來顯示乙個字串:

char* string = "hello world!";

printf("%s\n", string);

hello world!

請大家注意,這裡的char型別後有乙個星號* ,它表示的是這是乙個指標型變數(關於指標我們會在後續章節中學習,暫時先不去考慮這個問題),我們把char*這種變數型別看成是乙個字串型變數,後面的string是這個變數的名字,然後是賦值號=,再右側是雙引號括起來的一段文字,也就是我們所說的字串。

最後,我們來定義12個月的名稱(具有12個字串型別變數的陣列)和它們的最大天數(具有12個整型變數的陣列),不考慮閏年的情況,使用迴圈將它們顯示出來:

#include main()

; int days[12] = ;

while (m < 12) }

there is 31 days in january.

there is 28 days in february.

there is 31 days in march.

there is 30 days in april.

there is 31 days in may.

there is 30 days in june.

there is 31 days in july.

there is 31 days in august.

there is 30 days in september.

there is 31 days in october.

there is 30 days in november.

there is 31 days in december.

c語言基礎 字串陣列

在 c 語言中,字串實際上是使用null字元 0 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。下面的使用字串陣列宣告和初始化建立了乙個 hello 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的大小比單詞 hello 的字元數多乙個。char greeting ...

C語言字串與字元陣列

通俗的講字串是由一串字元組成,例如 hello world n 即是乙個字串。c 語言中沒有真正意義上的字串型別,字串由字元陣列或者字串常量來表示。const char p hello world n 上述示例中 hello world n 即是乙個字串常量,該常量由乙個字元型別指標儲存其實際位址。...

c語言陣列與字串

二維陣列 回想一維陣列定義方式 型別修飾符 陣列名 元素個數 int array 5 建立乙個二維陣列 型別修飾符陣列名 包含幾個小陣列 每個小陣列有多少個元素 初始值如何寫?int array 3 4 一維陣列可以省略元素個數,二維資料只能省略第一維 第二種初始值寫法 int array 3 4 ...