1.字符數(shù)組
定義一個(gè)字符數(shù)組時(shí),您必須讓編譯器知道它需要多大空間。
如:
const char msg[40] = "show me the money!";
const表明這個(gè)字符串不可以在程序中改變。
這種初始化和下面所示的標(biāo)準(zhǔn)數(shù)組初始化相比是很簡(jiǎn)短的:
const char msg[] = {'s', 'h', 'o', 'w', ' ',
'm', 'e', ' ', 't', 'h',
'e', 'm', 'o', 'n', 'e',
'y', '\0'
};
注意標(biāo)志結(jié)束的空字符。如果沒(méi)有它,得到的就只是一個(gè)字符數(shù)組而不是一個(gè)字符串。
另外,指定數(shù)組大小時(shí),一定要確保數(shù)組元素個(gè)數(shù)比字符串的長(zhǎng)度至少多1(多出來(lái)的1個(gè)元素用來(lái)存放空字符)。
未被使用的元素均被自動(dòng)初始化為\0。這里因?yàn)槭亲址麛?shù)組,所以初始化為char形式的空字符,而不是數(shù)字字符0。
如果在進(jìn)行初始化聲明時(shí)省略了數(shù)組大小,則該大小由編譯器來(lái)決定。
但是請(qǐng)注意,如果并非在初始化時(shí)就進(jìn)行聲明,則必須為數(shù)組明確的分配大小。
#define LINELEN 81 //最大字符串長(zhǎng)度 + 1
……
char name[LINELEN];
聲明一個(gè)數(shù)組時(shí),數(shù)組的大小必須為整型常量,而不是在運(yùn)行時(shí)得到的變量值。
和任何數(shù)組名一樣,字符數(shù)組名也是數(shù)組首元素的地址。應(yīng)此下面的式子對(duì)數(shù)組msg成立。
msg == &msg[0]
*msg == 's'
*(msg + 1) == msg[1] == 'h'