1.字符數組:
char str[]=”sbdc”;
char str2[]={“abdcdef”};
但是如果char str2[]={‘a’,’d’,’f’,’g’},想用printf(“%s”,str)這種格式輸出,會遇到如下的結果:
原因為 printf這個函數是遇到’\0’就結束,所以解決的方法是:char str2[]={‘a’,’d’,’f’,’g’,’\0’},結果如下:
或者解決方法為:
也就是說,定義數組的時候,也設置了數組的長度也可以輸出理想的結果!
2.字符串指針(指向一個字符串的指針變量)
例如: int *p; 分兩種:
(1)字符指針(總結:用單引號的為字符指針)
char ch=’a’;
char *s=&ch;
(2)字符串指針(用雙引號的為字符串指針)
cahr *str=”abc”;
從上面這個實例,可以知道 定義了一個字符串指針變量,變量名為 str,str存放的是 “abc”這個字符串的首地址,這個首地址就是第一個字符的地址 &a.
用字符串指針遍歷讀取字符串的每個字符兩種方法:
( str+1 表示指向下一個元素的地址)
注意:字符串指針不能直接接收鍵盤輸入的內容!
字符串可以從鍵盤中輸入內容:
(要注意以上三種的區別) 因為 str=&str[0]
字符串指針不能直接接收鍵盤輸入的內容:
字符串數組保存在棧區,可以被讀寫。字符串的寫入操作如下:
字符串指針存放內存中的常量區,只可以讀,不能被修改。
3.char類型的指針數組,可以保存多個字符串
字符串數組的要求有兩個:
(1)該數組是二維的字符數組
(2)是char類型的指針數組
char *str[]={“asd”,”fgh”,”ert”};
用for循環來遍歷每個字符串
for(int i=0;i<3;i++){printf(“%s\n”,str[i])};
注意:
1). 不能修改 字符串的內容,因為每個字符串都在內存的常量區存儲(常量的數據只能讀,不能修改)
2). 字符串指針變量可以重新被賦值,但是指向會發生改變,如果s重新被賦值的內容是相同的,此時,指向沒有發生改變
3)字符數組不能被整體重新賦值,但是可以改變某個字符!
4.二維的字符數組也可以存放多個字符數組,可以改變某個字符串的某個字符。