1.用指標方法實現一個字串的儲存和運算
如:
char * strp=″china″;
此處定義了一個字元指標變數strp,變數中存放的是字串第一個字元的地址。
C語言對字串常量是按字元陣列處理的,它實際上在記憶體開闢了一個字元陣列用來存放字串變數,並把字串首地址賦給字元指標變數strp。
在輸出時用
printf(″%s\n″,strp);
通過字元陣列名或字元指標變數可以輸出一個字串。而對一個數值型陣列,是不能企圖用陣列名輸出它的全部元素的。
2.字元指標變數與字元陣列
雖然用字元陣列和字元指標變數都能實現字串的儲存和運算,但它們二者之間是有區別的,不應混為一談,主要有以下幾點:
(1)字元陣列由若干個元素組成,每個元素中放一個字元,而字元指標變數中存放的.是地址(字串的首地址),決不是將字串放到字元指標變數中。
(2)對字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值。
Char str[14];
str=″I love China!″;
而對字元指標變數,可以採用下面方法賦值:
char *a;
a=″I love China!″;
但注意賦給a的不是字元,而是字串的首地址。
(3)賦初值時,對以下的變數定義和賦初值:
char *a=″I love China!″;
等價於:
char *a;
a=″I love China!″;
而對陣列初始化時:
static char str[14]={″I love China!″};
不能等價於
char str[14];
str[]={″I love China!″};
即陣列可以在變數定義時整體賦初值,但不能在賦值語句中整體賦值。
(4)在定義一個數組時,在編譯時即已分配記憶體單元,有確定的地址。而定義一個字元指標變數時,給指標變數分配記憶體單元,在其中可以放一個地址值,就是說,該指標變數可以指向一個字元型資料,但如果未對它賦予一個地址值,這時該指標變數並未具體指向哪一個字元資料。
(5)指標變數的值是可以改變的。
3.字串處理函式
C語言中沒有對字串進行合併、比較和賦值的運算子,但幾乎所有版本的C語言中都提供了有關的庫函式。例如:
(1)strcat函式:連線兩個字元陣列中的字串
(2)strcpy函式:字元拷貝函式
(3)strcmp函式:字元比較函式
(4)strlen函式:測試字串長度的函式
(5)strlwr函式:將字串中大寫字母轉換成小寫字母
(6)strupr函式:將字元中小寫字母轉換成大寫字母