一、字符串:
1、C語言中字符串是以 /0 結尾的;
2、C語言中沒有字符串類型,用字符數組來模擬字符串;
3、字符串分配內存 可以是 棧區、堆區、或者全局區;
二、字符數組的初始化:
1、固定長度
例如:char buf[4 ] = {'a','b','c','d'}; //結尾沒有‘/0’ 不是C風格
2、不固定長度:
例如:char buf[ ] = {'a','b','c','d'}; //結尾沒有‘/0’ 不是C風格
3、字面值對字符數組初始化:
例如: char buf [ ] = "abcd"; //字符數組內自動補齊 ‘/0’
三、計算字符串 和 字符數組 長度的方法:
1、計算字符串:用strlen();函數,包含頭文件string.h;不將 ‘/0’ 計算在內;
2、計算字符數組: 用sizeof()關鍵字,將字符數組末尾的‘/0’計算在內。
四、在使用字符串時候應注意的問題:
1、初始化字符數組的時候 char buf [ ] = "abcd";的方式時,“abcd”是字面值,在內存中被分配在常量區,不可更改。
2、字符數組 char buf[ ] = "abcd"; 中數組名buf是字符串的首元素地址,不可賦值更改。原因是編譯器爲確保棧區分配給字符數組buf的內存空間在釋放時候得到完全釋放。
3、對字符串進行操作多引進指針變量,char* p = “abcd”;p所指向的是字符串”abcd”的首地址(就是指向a),p+1 則指向b,以此類推;這時候p可以改變,而*p不可改變。原因就是第1條,”abcd“在常量區,而p在棧區。