c中字串常量和字元陣列的區別

2021-07-23 06:22:51 字數 448 閱讀 2124

在c語言中我們經常會認為字串常量和字元數值本質是一樣的,但實際上這兩者是有區別。

下面我麼以乙個例子來進行說明。

#includevoid mian()

當中的「helloworld\n」實際上代表的是乙個指向無名字元陣列的起始指標,該字元陣列的大小是包含字串中所有的內容,外加乙個『\0』。

所以 printf("helloworld\n");實際上等價於:

char hello [ ]=;

printf(hello);

因此在使用的時候要特別注意。

如果使用 char* p='\n';

將會報錯,因為編譯器會把字元當成乙個int型的數值儲存,其值就是它的ascii值。

同時要注意printf(『\n』)與printf("\n")的區別,前者只是乙個int型數值,後者則是乙個指標。

字串常量和字元常量的區別

字串常量和字元常量是不同的量。它們之間主要有以下區別 1 字元常量由單引號括起來,字串常量由雙引號括起來。2 字元常量只能是單個字元,字串常量則可以含乙個或多個字元。3 可以把乙個字元常量賦予乙個字元變數,但不能把乙個字串常量賦予乙個字元變數。在 語言中沒有相應的字串變數。這是與basic 語言不同...

字串常量和字元陣列

1.字串常量 char cstringa hello word 並不建議這樣寫 const char cstringb hello word 建議寫成這樣 cstringa a 執行時出錯,字串常量不允許修改 實際上,c語言中的標準,對於字串常量必須要賦值給const char 的變數,這樣就可以理...

字串常量和字元陣列

一.字串都是以 0 結尾 二.凡是雙引號中的內容,皆是字串。也就是,雙引號會在它內容後自動加乙個 0 且佔乙個位元組數。三.單引號中容納的是char型別的字元常量,且僅能容納乙個 四.字元陣列中不指定長度,系統會自動匹配適應的長度。五.如果對字元陣列沒有初始化完全,系統會在未賦值的地方新增 0 ch...