1. 程式人生 > >C++指標和陣列:字元和字串、字元陣列

C++指標和陣列:字元和字串、字元陣列

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 碼值。

          為了理解上面一點,我們看下面的例子:

         

          看到了吧,我們可以直接用下標訪問字串常量中的值。當然這樣做的意義只是為了讓我們更深入的理解字串,在實際使用的時候還是要避免的。

6、字元陣列和字串指標做函式引數請看認識指標和陣列