字串常量

2021-06-27 09:25:03 字數 1254 閱讀 2593

字元常量是由一對單引號括起來的單個字元。不能將字串常量與

字元常量

混淆。字元常量可以賦值給字元變數,如"char b='a';",但不能把乙個字串常量賦給乙個字元變數,同時也不能對字串常量賦值!

(1)含義

字串常量是一對雙引號括起來的字串行。例如下面的是合法的字串常量:"how do you do.","china","a","$123.45"

儲存:字串中的字元依次儲存在記憶體中一塊連續的區域內,並且把空字元『 \0』自動附加到字串的尾部作為字串的結束標誌。故字元個數為n的字串在記憶體中應佔(n+1)個

位元組 。

可以輸出字串,例如:

printf("how do you do.");

(2)與字元常量的比較

c語言允許使用字串常量外,還允許使用字元常量。

(3)與字元陣列的關係

在c語言中沒有專門的字串變數,如果想將乙個字串存放在變數中以便儲存,必須使用字元

陣列 ,即用乙個字元型陣列來存放乙個字串,陣列中每乙個元素存放乙個字元。例如「char a[10]="love".

(4)與指標的關係

在程式中,字串常量會生成乙個「指向字元的常量指標」。當乙個字串常量出現於乙個表示式中時,表示式所使用的值就是這些字元所儲存的位址,而不是這些字元本身。因此,你可以把字串常量賦值給乙個「指向字元 的指標」,例如:char *a = "123" ; a = "abc";,後者指向這些字元所儲存的位址。但是,你不能把字串常量賦值給乙個字元陣列,因為字串常量的直接值是乙個指標,而不是這些字元本身。例如:char a[5];a[0] = "a";就是錯誤的,報錯結果:invalid conversion from 'const char*' to 'char'。

例如:char a[10]="love",的意思就是用字串「love」來初始化字元陣列a的記憶體空間,而陣列的首位址也就是「love」字串的位址。

(5)字串指標的初始化

char *a="china";等價於char *a;a="china";char *a="china";這個語句的釋義是:宣告乙個字元指標a,該指標指向常量區字串"china"的首位址,而char *a;*a="china";這個是錯誤的,*a標示的是乙個字元值,*a="china";會產生乙個字串資料向字元資料賦值的error。

常量,字串常量

對於普通變數常量 常量摺疊 是 就是在編譯器進行語法分析的時候,將常量表示式計算求值,並用求 得的值來替換表示式,放入常量表。可以算作一種編譯優化 include void main 輸出 3 2 我只是改了這個位址內容,但是e還是2,因為編譯器在優化的過程中,會把碰見的const全部以內容替換掉 ...

字串常量

1.當乙個字串常量出現於表示式中時,它的值是乙個指標常量。編譯器被這些指定字元的乙份拷貝儲存在記憶體的某個位置,並儲存乙個指向第乙個字元的指標。陣列名用於表示式中時,它的值也是指標常量 2.xyz 1 因為字串常量實際上是個常量指標,這個表示式計算 指標值加上1 的數值。它的結果是個指標,指向字串中...

字串常量

來自 常量字串為什麼位於靜態儲存區?char c chenxi 書上說 chenxi 這個字串被當作常量而且被放置在此程式的記憶體靜態區。那一般的int i 1 1也是常量,為什麼1就不被放置在此程式的記憶體靜態區了呢?請高手指點!所有的字元竄常量都被放在靜態記憶體區 因為字串常量很少需要修改,放在...