char pres[4][2][11] = {
"George", "Washington",
"John", "Adams",
"Thomas", "Jefferson",
"James", "Monroe"
};
有人可以解釋爲什麼pres
數組是三維的嗎?我試着用二維的循環(pres[4][2]
)顯示pre數組,但是它不起作用。c字符串數組維數
char pres[4][2][11] = {
"George", "Washington",
"John", "Adams",
"Thomas", "Jefferson",
"James", "Monroe"
};
有人可以解釋爲什麼pres
數組是三維的嗎?我試着用二維的循環(pres[4][2]
)顯示pre數組,但是它不起作用。c字符串數組維數
這是因爲C中定義了一串字符。在C中,一個字符串只是一個單個字符的數組,如果你想在一個數組中使用多個單詞,則必須給出一個數組數組。
在你的情況下,你想要將字符串分隔成單獨的列,例如C++可以作爲字符串數組[] []給出,但是在C中,您將不得不應用另一個「圖層」來表示字符串他們自己。
「C中的字符串只是單個字符的數組」 - 單詞「just」可能存在問題,因爲這可以理解爲「字符串」和「字符數組」是簡單的同義詞,這是錯誤的。它提醒初學者關於無效終止符的重要性從未受傷。 –
這是一個三維字符數組,因爲它在概念上是一個二維數組字符串,而字符串是一維空字符終止數組。
儘管這樣做有效,但這種方法的缺點是它只能保存長度爲10的字符串(爲空終止符留下空間)。出於這個原因,使用char *
的數組並傾向於更靈活,然後根據實際字符串的需要分配和釋放空間。你說你試過看pres[4][2]
。這是沒有意義的,因爲數組索引是從0開始的。pres[3][1]
將是"Monroe"
- 數組中的最後一個字符串。
要全部打印出來是非常簡單的:
#include <stdio.h>
int main(void){
int i;
char pres[4][2][11] = {
"George", "Washington",
"John", "Adams",
"Thomas", "Jefferson",
"James", "Monroe"
};
for(i=0;i<4;i++) printf("President %s %s\n",pres[i][0],pres[i][1]);
return 0;
}
,輸出:
President George Washington
President John Adams
President Thomas Jefferson
President James Monroe
你是怎樣嘗試顯示呢?數組聲明/初始化看起來很好...... – Dmitri
這似乎是一個數組''[8] [11]',即使它有效,您更喜歡'char pres [4] [2] [11] = { {「George」 ,「華盛頓」}, {「John」,「Adams」}, {「Thomas」,「Jefferson」}, {「James」,「Monroe」} };' –
把它想象成2-二維數組的字符串。字符串本身是一維字符數組,並且2 + 1 = 3。 –