1.串常數
也就是說,壹對雙括號中的任何字符。編譯器自動提供的雙引號字符和結束標誌\0字符用作
字符串存儲在內存中。如:printf(“% s”、“hello”);//“妳好”
如果字符串文本中間沒有空格或空格中有空格字符,ANSI C將把它們連接起來。示例:
char問候語【50】=“妳好”和“妳好嗎”;
相當於:
char問候語【50】=“妳好,妳好嗎”;
字符串常量屬於靜態存儲類。靜態存儲意味著如果在函數中使用字符串常量,即使該函數被多次調用,
該字符串在程序的整個運行過程中只存儲壹次。整個引號的內容充當指向字符串存儲位置的指針。這與
使用數組名稱作為指向數組存儲位置的指針是類似的。
2.字符串數組及其初始化
初始化示例:
char m【40】=“妳好,世界“;//定義字符串數組時,必須指定數組大小(整數常量)。指定大小時,請確保數組大小大於預定值,因為編譯器會自動添加“\0”。
//額外的元素將被初始化為“\0”
char m = {‘h‘,‘e‘,‘l‘,‘\ 0‘};//註意符號末尾的空字符。如果沒有它,妳只會得到壹個字符數組而不是壹個字符串。
3.使用字符指針定義字符串。
char *m =“妳好,世界“;//自動添加“\0”
註意:此時字符串指針m指向字符串常量,所以不能用*(m+1)=‘o‘修改此常量,因為如果將此字符串常量放在常量區域中則無法修改。
4.數組和指針
數組形式和指針形式有什麽區別?
數組形式:char m【40】=“hello,world“;
指針形式:char * m =“hello,world“;
數組形式:
編譯器將把數組& ampm視為數組& amp;的第壹個元素的地址。m【0】的同義詞,其中m是地址常數。可以使用m+1來標識數組中的下壹個元素,但不能使用++m .增量運算符只能用在變量之前,不能用在常量之前。
m【40】在計算機內存中被分配了壹個包含40個元素的數組(其中每個元素對應壹個字符,另壹個元素對應結尾的空字符“\0”)。每個元素都被初始化為相應的字符。
通常,引用的字符串存儲在可執行文件的數據段中;當程序加載到內存中時,字符串也被加載到內存中,引用的字符串被復制到數組中。
指針形式:
指針形式(*m)也在靜態存儲區域為字符串保留空間。此外,壹旦程序開始執行,應該為指針變量m保留另壹個存儲位置,以便字符串的地址可以存儲在該指針變量中。
m指向字符串的第壹個字符,++m可用於指向第二個字符。指針m是壹個變量。