C++學習筆記2023-05-03

區(qū)別string對象(字符串對象)和字符串常量

一、字符串對象

在C++中,字符串常量是指程序中固定不變的字符串值,例如:"hello world"。字符串常量存儲在只讀的靜態(tài)存儲區(qū)域,通常稱為常量區(qū)或靜態(tài)存儲區(qū),編譯器會在程序編譯時為其分配內(nèi)存空間。由于字符串常量的值是固定的,因此它們不能被修改。

字符串對象是C++標準庫中提供的一個類,用于表示可變的字符串值。我們可以使用string類來創(chuàng)建和操作字符串對象,例如:

#include <string>
using namespace std;

int main() {
    string str1 = "hello";
    string str2 = "world";
    string str3 = str1 + " " + str2;
    cout << str3 << endl; // 輸出 "hello world"
    return 0;
}

這里的string是一個類。

在這個例子中,我們使用了string類來創(chuàng)建字符串對象str1、str2和str3,并對它們進行了一些操作,例如拼接字符串。與字符串常量不同,字符串對象中的值是可以修改的。

需要注意的是,雖然字符串常量和字符串對象都表示字符串值,但它們在內(nèi)存中的存儲方式不同。字符串常量存儲在只讀的靜態(tài)存儲區(qū)域,而字符串對象通常是在堆?;蚨焉戏峙鋬?nèi)存來存儲。這也是為什么字符串常量的值是不可修改的,而字符串對象的值是可變的。

二、字符串常量

const char* str = "Hello";
*str = 'h';    // 編譯器報錯

這個代碼片段會導(dǎo)致編譯器報錯,因為str指針指向的是字符串常量的首地址,而字符串常量是只讀數(shù)據(jù),不允許被修改。因此,由于const char*聲明的指針是指向常量的指針,它所指向的字符數(shù)組是不可修改的。

字符串常量"Hello"被存儲在常量區(qū),常量區(qū)的內(nèi)存只有讀取權(quán)限,沒有寫入權(quán)限,因襲他們的值在程序運行期間不能改變。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 初識C++ C++標準格式 變量 作用:給一段指定的內(nèi)存空間起名,方便操作這段內(nèi)存。語法:數(shù)據(jù)類型 變量名 = ...
    home2_d685閱讀 258評論 0 0
  • ^函數(shù)重載的匹配: 當函數(shù)名被重載后,函數(shù)的匹配過程:首先尋找能精確匹配的函數(shù),如果未能精確匹配,則嘗試...
    魯大帥閱讀 1,142評論 0 1
  • C++學習筆記 day2 教學課程鏈接:bilibili 黑馬程序員:C++從0到1入門編程[https://ww...
    AmberCheung閱讀 321評論 0 0
  • 前言 個人覺得學習編程最有效的方法是閱讀專業(yè)的書籍,通過閱讀專業(yè)書籍可以構(gòu)建更加系統(tǒng)化的知識體系。 一直以來都很想...
    好先生FX閱讀 182評論 0 0
  • Java從入門到精通學習筆記 第一章初識java a)Java是一種通過解釋方式來執(zhí)行的語言。 b)Java語言編...
    張中華閱讀 1,579評論 3 23

友情鏈接更多精彩內(nèi)容