日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较

發(fā)布時(shí)間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

先看如下代碼:

以上用兩種方式定義一個(gè)字符串:

1、定義一個(gè)char * 類型指針,指向字符串首字符首地址。

2、定義一個(gè)數(shù)組,數(shù)組里存放元素為字符串各個(gè)字符+'0',其中'0'為碼0值,編譯器會(huì)自動(dòng)在字符串的末尾添加此值。

先看這兩個(gè)"變量"分別是存在內(nèi)存的哪個(gè)區(qū)域,(后面可知string1為常量)修改代碼如下,打印這兩個(gè)“變量”的內(nèi)存地址,查看運(yùn)行結(jié)果:

查看進(jìn)程的內(nèi)存分布情況,(詳情請(qǐng)查看:RobotCode俱樂(lè)部:手撕虛擬內(nèi)存(1)——字符串在虛擬內(nèi)存中的段位置與/proc虛擬文件系統(tǒng)),string1內(nèi)存首地址為0x80485a0,string2內(nèi)存首地址為0bfaebfd8。如下圖,可知這兩種定義方式,一種位于只讀區(qū)(0x8048000 < 0x80485a0 < 0x8049000),一種位于Stack區(qū)(0xbfacd000 < 0bfaebfd8 < 0xbfaee000)。可知,string1為常量(只讀的,權(quán)限為r),在編譯時(shí)就確定了。string2存放在棧上,運(yùn)行時(shí)確定。這也決定了,定義string1的方式適用于定義字符串常量,string2方式適用于字符串變量可能需要被修改的情況。同時(shí)需要注意的是,未必定義在函數(shù)體里的“變量”都會(huì)分布在棧上,如這里的字符串常量,及static修飾的局部變量,他們都是分布在全局靜態(tài)區(qū),由編譯器在編譯時(shí)決定,而非函數(shù)運(yùn)行時(shí)動(dòng)態(tài)分配。另外全局靜態(tài)區(qū)的變量生命期與整個(gè)進(jìn)程的生命期相同,大于等于函數(shù)的生命期。

總結(jié)

以上是生活随笔為你收集整理的c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。