最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C/C++編程筆記:在C語言中存儲字符串!方法 + 源碼示例

2021-01-25 21:21 作者:C語言編程__Plus  | 我要投稿

在C語言中,可以使用字符指針或字符數(shù)組來引用字符串。?


字符串作為字符數(shù)組

char str[4] = "GfG";

char str[4] = {‘G’, ‘f’, ‘G’, '\0'};

當將字符串聲明為字符數(shù)組時,它們像在C中的其他類型的數(shù)組一樣存儲。例如,如果str []是自動變量,則字符串存儲在堆棧段中,如果它是全局或靜態(tài)變量,則存儲在數(shù)據(jù)段中等

使用字符指針字符串

使用字符指針字符串可以存儲在兩個方面:

1)共享段中的只讀字符串。?

在大多數(shù)編譯器中,將字符串值直接分配給指針后,它會存儲在一個函數(shù)之間共享的只讀塊(通常在數(shù)據(jù)段中)中。?

char *str? =? "GfG";?

在上面的行中,“ GfG”存儲在共享的只讀位置,但指針str存儲在讀寫存儲器中。您可以更改str以指向其他內(nèi)容,但不能更改當前str的值。因此,僅當我們不想在程序的后期修改字符串時,才應使用這種字符串。

2)在堆段中動態(tài)分配。?

字符串像其他動態(tài)分配的事物一樣存儲在C中,并且可以在函數(shù)之間共享。


讓我們看一些示例,以更好地理解上述存儲字符串的方法。

示例1(嘗試修改字符串)?

由于行*(str + 1)='n'試圖寫入只讀存儲器,因此以下程序可能會崩潰(產(chǎn)生分段錯誤)。?


下面的程序可以很好地運行,因為str []存儲在可寫堆棧段中。?


下面的程序也很完美,因為str處的數(shù)據(jù)存儲在可寫堆段中。?


示例2(嘗試從函數(shù)返回字符串)?

由于字符串存儲在共享段中,并且即使在返回getString()之后,存儲的數(shù)據(jù)仍保留在該程序中,以下程序可以很好地運行


下面的程序也可以很好地運行,因為字符串存儲在堆段中,并且即使返回getString()后,存儲在堆段中的數(shù)據(jù)仍然存在?


但是,下面的程序可能會打印一些垃圾數(shù)據(jù),因為字符串存儲在函數(shù)getString()的堆棧幀中,并且在getString()返回之后數(shù)據(jù)可能不存在。?


希望對你有幫助!更多編程知識點,會持續(xù)分享哦~

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

UP在主頁上傳了一些學習C/C++編程的視頻教程,有興趣或者正在學習的小伙伴一定要去看一看哦!會對你有幫助的~

分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!

編程學習書籍分享:


編程學習視頻分享:



C/C++編程筆記:在C語言中存儲字符串!方法 + 源碼示例的評論 (共 條)

分享到微博請遵守國家法律
无极县| 宝鸡市| 湖南省| 黔东| 民县| 陕西省| 牟定县| 岳阳县| 珠海市| 永登县| 枝江市| 浦东新区| 当雄县| 保山市| 土默特左旗| 安吉县| 商都县| 海盐县| 三穗县| 承德县| 山阴县| 正定县| 白水县| 东山县| 灵璧县| 抚州市| 西林县| 紫阳县| 交口县| 丁青县| 松溪县| 汝城县| 大足县| 沙河市| 米脂县| 安泽县| 泸水县| 铜川市| 兴义市| 永嘉县| 凯里市|