C 語言中的字符串
在前面 C 語言的變量類型中介紹過 C 語言中的變量類型。不知道大家有沒有注意到,在 C 語言中有字符類型的變量,但是沒有其他編程語言中經(jīng)常出現(xiàn)的字符串類型,在 JAVA 或者 C# 中用 string
這個(gè)關(guān)鍵字來聲明其類型。但是在 C 語言中是沒有這個(gè)變量類型的。
1. 字符串
在 C 語言中定義的字符串是一個(gè)由字符組成的數(shù)組,這個(gè)數(shù)組的最后一個(gè)元素是一個(gè)表示空的字符 \0
。
字符串 abcde
在 C 語言中的存儲(chǔ)方式如下
char str[]="abcde";
--------------------------
| a | b | c | d | e | \0 |
--------------------------
0 1 2 3 4 5 索引
2. 字符串的聲明
因?yàn)樽址怯勺址當(dāng)?shù)組存儲(chǔ)的,所以字符串的聲明就是聲明了一個(gè)字符串?dāng)?shù)組。方式如下:
char str[6];
3. 字符串的初始化
字符串的初始化可以直接使用雙引號(hào)的方式,也可以遵循數(shù)組初始化的方式,但是,有一點(diǎn)特別。就是在使用單個(gè)字符逐個(gè)賦值的時(shí)候,最后一個(gè)元素一定是 \0
,而且最需要注意的是,數(shù)組的容量一定要比你實(shí)際存儲(chǔ)的字符的數(shù)量多一,因?yàn)槟阋米詈笠晃粊泶鎯?chǔ) \0
。
char a[] = "We are family.";
char b[5] = "abcd";
char c[5] = {'a', 'b', 'c', 'd', '\0'}; // 請(qǐng)注意這個(gè)初始化方式,和之前的數(shù)組初始化方式一致。
4. 字符串的使用
字符串的使用中,可以通過雙引號(hào)包圍字符的方式直接給它賦值,但是請(qǐng)注意這個(gè)時(shí)候你可能不知道數(shù)組的大小,可能會(huì)造成數(shù)組的溢出錯(cuò)誤,也就是你的賦值超出了數(shù)組可以存儲(chǔ)的最大的字符的數(shù)量。因?yàn)樽址旧硎峭ㄟ^字符數(shù)組來實(shí)現(xiàn)的,因此,數(shù)組的使用方式在這里是可以使用的。比如你可以訪問字符串中的某一個(gè)字符,或者更改其中的某一個(gè)字符,只要通過其索引位置就可以了, str[9] = 'a';
。
5. 示例
#include <stdio.h>
int main()
{
char a[5];
char b[] = "abcde";
char c[6] = {'a', 'b', 'c', 'd', 'e', '\0'};
a[0] = 'H';
a[1] = 'e';
a[2] = 'l';
a[3] = 'l';
a[4] = '\0';
printf("a = %s\n", a);
for (int i = 0; i < 5; i++)
{
printf("a[%d] = %c\n", i, a[i]);
}
for (int i = 0; i < 6; i++)
{
printf("b[%d] = %c\n", i, b[i]);
}
printf("c = %s\n", c);
return 0;
}
運(yùn)行結(jié)果:
a = Hell
a[0] = H
a[1] = e
a[2] = l
a[3] = l
a[4] =
b[0] = a
b[1] = b
b[2] = c
b[3] = d
b[4] = e
b[5] =
c = abcde
示例程序里展示了單獨(dú)聲明字符串 a
,并且在后面為其賦值,初始化變量 b
和 c
。接著,我們通過屏幕打印語句查看了字符串的內(nèi)容,并且通過循環(huán)語句,輸出了字符數(shù)組中存儲(chǔ)的字符串。
字符串在 C 語言中是不安全存在的,請(qǐng)大家切記如果不是在初始化的時(shí)候用雙引號(hào)的形式賦值,在使用數(shù)組賦值的時(shí)候,請(qǐng)大家一定不要忘記末尾的結(jié)束符號(hào)。如果缺少了這個(gè)符號(hào),大家可以嘗試看看,看看內(nèi)存使用錯(cuò)誤的奇妙。
6. 小結(jié)
字符串在 C 語言中的處理與其他語言相比是比較特殊的。在 C 語言中沒有專門的字符串的變量類型。而是通過字符數(shù)組的方式來實(shí)現(xiàn)字符串的功能。這使得字符串具有了數(shù)組的全部特性。但是與其它類型的數(shù)組最大的一點(diǎn)區(qū)別就是存儲(chǔ)字符串的數(shù)組的最后一位是 \0
,表示的是空,這點(diǎn)可以用來檢測(cè)一個(gè)字符串是不是已經(jīng)到了末尾。