【C 語言入門】 190.儲存多個字串

使用二維陣列儲存多個字串

int strA[3][4] = {"How", "are", "you"};

字串的結尾需要 ‘\0’ 作為結尾,因此每個英文單字的結尾我們都需要需要多一個字元空間存放。

我們也可以用指標的陣列的方式去存,不過這樣會是唯讀的。

strB 有 3 個格子,每個格子都是一個指標,指向系統產生的 “How”, “are”, “you” 的起始位址。

const char *strB = {"How", "are", "you"};

我們可以用 strB[0] 去存取 “How”,用 strB[1] 去存取 “are”,用 strB[2] 去存取 “you”。

如果今天我們是用二維陣列來儲存,我們就可以直接儲存並修改其中的字元。

char strA[3][4] = {"How", "are", "you"};
strA[2][0] = 'Y';    //(O)

指標陣列

如果我們今天使用的是指標陣列,我們就知道它是 constant character pointer ,也就是不能被改的指標。

const char *strB[3] = {"How", "are", "you"};
strB[2][0] = 'Y';    //(X)

我們可以看到,我們用二維陣列是可以更改的,但是指標不行。

相對的,如果我們用指標陣列存,我們可以直接把整個字串重新定義。

const char *strB[3] = {"How", "are", "you"};
strB[0] = "What";    //(O)
char strA[3][4] = {"How", "are", "you"};
strA[0] = "What";    //(X)

我們可以用二維陣列來存放多個字串。

char strA[3][4] = {"How", "are", "you"};
const char *strB[3] = {"How", "are", "you"};


strA[2][0] = 'Y';         //(O)
strA[0] = "What";         //(X)
strcpy(strA[0], "What")   //(X)

strB[2][0] = 'Y';         //(X)
strB[0] = "What";         //(O)
strcpy(strB[0], "What")   //(X)

總結

對二維陣列而言,我們可以很簡單的修改每個字元,但是沒辦法很輕易的修改證個字串。

而對指標陣列來說,我們可以很快地修改每個字串,但是沒辦法修改每個字元。

Leave a Comment

Your email address will not be published. Required fields are marked *