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