標籤:cti gfs pos printf ber ret 需要 沒有 rap
1:概念
用來存放字元的數組成為字元數組。
例如:
char a[10]={‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘j‘,‘g‘,‘f‘,‘k‘};//
【注意】在C語言中沒有字串,所以用字元數組來存放字串。
例如:
char a[30]={"shisihuansheng.blog"};
char a[30]="shisihuansheng.blog";//這個寫法更為簡潔,方便,開發時候經常使用。
a[0]=s;a[1]=h 依次類推。
在C語言中,字串總是以‘\0‘作為串的結束符。上面的兩個字串,編譯器已經在末尾自動添加了‘\0‘
puts 和 printf 在輸出字串時會逐個掃描字元,直到遇見 ‘\0‘ 才結束輸出。請看下面的例子:
純文字複製
- #include <stdio.h>
- int main(){
- int i;
- char str1[30] = "http://c.biancheng.net";
- char str2[] = "C Language";
- char str3[30] = "You are a good\0 boy!";
- printf("str1: %s\n", str1);
- printf("str2: %s\n", str2);
- printf("str3: %s\n", str3);
- return 0;
- }
運行結果:
str1: http://c.biancheng.net
str2: C Language
str3: You are a good
str1 和 str2 很好理解,編譯器會在字串最後自動添加 ‘\0‘,並且數組足夠大,所以會輸出整個字串。對於 str3,由於字串中間存在 ‘\0‘,printf() 掃描到這裡就認為字串結束了,所以不會輸出後面的內容。
需要注意的是,用字串給字元數組賦值時由於要添加結束符 ‘\0‘,數組的長度要比字串的長度(字串長度不包括 ‘\0‘)大1。例如:
char str[] = "C program";
該數組在記憶體中的實際存放情況為:
字串長度為 9,數組長度為 10。
C語言-字元數組和字串