字符數(shù)組和字符指針的區(qū)別

c++中:

char arry[ ]="hello world";在棧上分配一個局部數(shù)組。

char *ptr =“hello world”;在全局空間分配一個全局?jǐn)?shù)組。

二者異同:

(i)“hello world!”都是占用13個字節(jié)(其中最后一個為空字符結(jié)束標(biāo)志);

(ii) ptr是一個char *類型的變量,占用4個字節(jié);arry是一個char[13]類型的變量,占用13個字節(jié);

(iii)cout<< ptr<<endl; 輸出hello world!

cout<<*ptr<<endl;輸出h;

cout<<arry<<endl;輸出hello world!

cout<<*arry<<endl;輸出h;

(iv)數(shù)組形參,不能以值傳遞的方式傳遞數(shù)組,可以寫成類似數(shù)組的形式

void print(const int *);

void print(const int [ ]);

void print(const int [10]);//維度表示期待的元素個數(shù),實(shí)際不一定;

即:數(shù)組作為參數(shù)傳遞個函數(shù)時傳遞的是指針而不是數(shù)組,傳遞的是數(shù)組的首地址。

(v)分配內(nèi)存空間不同

ptr是分配一個全局?jǐn)?shù)組,全局?jǐn)?shù)組是全局變量,對應(yīng)內(nèi)存中的全局區(qū)域,保存在普通數(shù)據(jù)段(靜態(tài)存儲區(qū));

arry是分配一個局部數(shù)組,局部數(shù)組是局部變量,對應(yīng)的是內(nèi)存中的棧。

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

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

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