字元、字元數組、char、string的區別分析

來源:互聯網
上載者:User

【規則】
1、string為普通類型,不是數組型,只是其內容為字串;
2、’a’和”a”的區別:’a’為字元,”a”為字串;單引號只能定義一個字元,雙引號可以定義多個字元,即字串。
3、指標可以通過加減、自加減改變其值,數組不可以。
4、以數組定義的字串可以修改其中的字元,以指標定義的字串不能修改其中的字元。

 

例如:
char a[]=”hello”;    //數組定義的字串
cout<<a;               //輸出 hello
cout<<*(a+1);          //輸出 e,即數組a的第2個字元,即a[1]
cout<<a[1];            //輸出 e,即數組a的第2個字元,與上同
cout<<*a++;            //錯誤,規則3,數組名是常量,不可以改變其值
cout<<*a;              //輸出 h,即數組a的第一個字元
cout<<a;               //輸出hello
*a=”L”;              //錯誤,規則2,*a為字元,”L”為字串,不匹配
*a=’L’;              //正確,規則4,將數組第一個字元修改為L
cout<<a;               //輸出 Lello
a[2]=’6’;            //正確,規則4,將數組第3個字元修改為’6’
cout<<a;               //輸出 Le6lo
--------------------------------------------------------------------------

char *a="hello";    //指標定義的字串
cout<<a;            //輸出 hello
cout<<*(a+1);       //輸出 e,即字串a的第2個字元
cout<<a[1];         //輸出 e,即字串a的第2個字元,這裡也可以視為數組a
cout<<*a++;         //輸出 h,,規則3,即先計算*a,再使a=a+1
cout<<*a;           //輸出 e,因上一行中a已經自加1
cout<<a;            //輸出 ello,因為指標a已經發生變化,指向了下一個地址,即指向以e開頭的字串
*a=’L’;           //錯誤,規則4,不能修改指標定義的字串的字元。
                    //【注意】此處編譯可通過,運行時會出錯,提示“不能寫入”
a[2]=’6’;         //錯誤,規則4,不能修改指標定義的字串的字元。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.