char s[]和char *s區(qū)別

在一次做題中溯祸,遇到的改錯(cuò)題甥厦,編譯是成功的栓霜,但是運(yùn)行會失敗寂殉。

實(shí)現(xiàn)hallo滓侍,world變成hello, world功能

圖 1

為什么會掛掉镊尺?這個(gè)主要涉及到內(nèi)存分配問題烙样。在c/c++中开仰,一個(gè)程序編譯后占用的內(nèi)存分區(qū)如下:

1)常量區(qū):字符串常量存放的地方播赁。由系統(tǒng)在程序結(jié)束后釋放颂郎。

2)全局區(qū)(靜態(tài)區(qū)):存放全局變量以及靜態(tài)變量,初始化的全局變量和靜態(tài)變量在一塊區(qū)域容为,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域乓序。由系統(tǒng)在程序結(jié)束后釋放。

3)堆區(qū):由程序員手動(dòng)分配和釋放舟奠,若程序員不釋放竭缝,程序結(jié)束可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事沼瘫,分配方式倒是類似于鏈表抬纸。

4)棧區(qū):由編譯器自動(dòng)分配釋放? ,存放函數(shù)的參數(shù)值耿戚,局部變量的值等湿故。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。

5)程序代碼區(qū):存放函數(shù)體的二進(jìn)制代碼膜蛔。

舉個(gè)例子如下:

圖 ?2?

回到改錯(cuò)題坛猪,char *s = "hallo,world";應(yīng)該改成char s[] = "hallo,world";

首先得認(rèn)識到char *s = "hallo,world"中"hallo,world"是分配在文字常量區(qū)的,然后在棧上分配一個(gè)地址給s,并用s 指針指向這塊常量區(qū)域皂股。因此墅茉,當(dāng)通過指針修改常量區(qū)的時(shí)候就會崩潰。

char *s=''123'';char s[] = ''123'';這兩種的區(qū)別呜呐?

?[]是將123拷過去的放在棧上就斤,而指針的那種是直接就指向了那個(gè)常量; ?char *s和char s[]聲明的數(shù)組是均可以通過*(s+i)和s[i]來獲取的,但是進(jìn)行元素修改的話也只能通過[]這種聲明的蘑辑,那個(gè)指針的并不可以洋机。還有當(dāng)char s[]這種的數(shù)組作為函數(shù)參數(shù)的話,會退化成指針洋魂;還有sizeof []這種的是返回?cái)?shù)組里面存的內(nèi)存大小绷旗,若是sizeof 非[](即指針)會返回指針的大小喜鼓。只有char *s可以使用s++寫法,char s[]是不可以的衔肢,控制臺提示這個(gè)char[]類型的不可以增加庄岖。char s[]中,雖有s = &s[0]膀懈,但此時(shí)s是一個(gè)常數(shù)顿锰,&s[0]是無法改變的谨垃;但char *s作為指向s[0]的指針變量启搂,是可以任意改變的。故可用s++任意更改指針變量的值刘陶。

參考:

http://blog.chinaunix.net/uid-27002868-id-3275995.html

http://www.cnblogs.com/xxfighting/archive/2010/08/26/1809196.html

僅僅標(biāo)記一下胳赌,以供后續(xù)回憶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匙隔,一起剝皮案震驚了整個(gè)濱河市疑苫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纷责,老刑警劉巖捍掺,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異再膳,居然都是意外死亡挺勿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門喂柒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來不瓶,“玉大人,你說我怎么就攤上這事灾杰∥秘ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵艳吠,是天一觀的道長麦备。 經(jīng)常有香客問我,道長昭娩,這世上最難降的妖魔是什么凛篙? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮题禀,結(jié)果婚禮上鞋诗,老公的妹妹穿的比我還像新娘。我一直安慰自己迈嘹,他們只是感情好削彬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布全庸。 她就那樣靜靜地躺著,像睡著了一般融痛。 火紅的嫁衣襯著肌膚如雪壶笼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天雁刷,我揣著相機(jī)與錄音覆劈,去河邊找鬼。 笑死沛励,一個(gè)胖子當(dāng)著我的面吹牛责语,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播目派,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼坤候,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了企蹭?” 一聲冷哼從身側(cè)響起白筹,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谅摄,沒想到半個(gè)月后徒河,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡送漠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年顽照,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螺男。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棒厘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出下隧,到底是詐尸還是另有隱情奢人,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布淆院,位于F島的核電站何乎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏土辩。R本人自食惡果不足惜支救,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拷淘。 院中可真熱鬧各墨,春花似錦、人聲如沸启涯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至黎做,卻和暖如春叉跛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒸殿。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工筷厘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宏所。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓酥艳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親楣铁。 傳聞我的和親對象是個(gè)殘疾皇子玖雁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理盖腕。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場景。SDWebImage的原...
    LZM輪回閱讀 2,004評論 0 12
  • 史上最全的iOS面試題及答案 迷途的羔羊--專為路癡量身打造的品牌浓镜。史上最精準(zhǔn)的定位溃列。想迷路都難!閃電更新中......
    南虞閱讀 1,497評論 0 8
  • JVM內(nèi)存模型Java虛擬機(jī)(Java Virtual Machine=JVM)的內(nèi)存空間分為五個(gè)部分膛薛,分別是: ...
    光劍書架上的書閱讀 2,483評論 2 26
  • 第一次來這里听隐,是因?yàn)橐晃慌笥言谶@里發(fā)布了自己的文章,于是來這里看看便知道了這里哄啄。后來在這里也先后讀過幾篇感興趣的帖...
    tryagain2015閱讀 266評論 0 0
  • 最近19日雅任,微信公眾平臺發(fā)布了一條關(guān)于“宗教捐獻(xiàn)”的事情,不知道大家有沒有看過咨跌,一些人利用有一些佛學(xué)號和在公眾號發(fā)...
    留占閱讀 637評論 0 0