1、字符串是一種重要的數據類型,但是c語言並沒有顯示的字符串數據類型,因爲字符串以字符串常量的形式出現或者存儲於字符數組中。
2、在C++標準模板庫(STL)中提供了string類,實現了對字符串的封裝。但是其實現原理還是居於字符和指針,要了解這個原理,我們先看一下有關字符數組、字符和字符串之間的一些關聯。
3、字符數組:
char ch[24] = {" today is a beautiful day"};//字符數組初始化時,如果使用者未顯示添加‘\0’,編譯器會自動加上,以表示字符串結束。
所以上面的初始化就相當於
char ch[24] = {"today is a beautiful day \0"};
除了用上述的方式來初始化一個字符數組,還可以用下面的方式:
char ch[] = "today is a beautiful day";
char ch[] = {'a','b,''c','\0'};
4、字符串指針:
char *p = "today is a beautiful day";//一經定義便初始化
char *p = NULL; 在定義時若未初始化,則需要先分配內存,然後再初始化
p = new char[24];//分配內存
strcpy(p,ch);//將p初始化爲ch中所存放的內容
5、有關字符串常量:
“today is a beautiful day” 這是一個字符串常量,位於常量區。而字符串常量實際上也是一個指針,指向該常量所在的內存空間。這也是爲什麼我們可以直 接用一個字符串常量來初始化一個字符串指針。
還有一點需要注意的就是,區別字符常量。字符常量是單引號括起來的,比如‘a’,'b'這樣的具有字面值的,且不在大括號{}內部的,其字面值便是ascii 碼值。
爲了理解上面一點,我們看下面的例子:
看到了吧,我們可以直接用下標訪問字符串常量中的值。當然這樣做的意義只是爲了讓我們更深入的理解字符串,在實際使用的時候還是要避免的。