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、字符數組和字符串指針做函數參數請看認識指針和數組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章