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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

先看如下代碼:

以上用兩種方式定義一個字符串:

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

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

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

查看進程的內(nèi)存分布情況,(詳情請查看:RobotCode俱樂部:手撕虛擬內(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為常量(只讀的,權限為r),在編譯時就確定了。string2存放在棧上,運行時確定。這也決定了,定義string1的方式適用于定義字符串常量,string2方式適用于字符串變量可能需要被修改的情況。同時需要注意的是,未必定義在函數(shù)體里的“變量”都會分布在棧上,如這里的字符串常量,及static修飾的局部變量,他們都是分布在全局靜態(tài)區(qū),由編譯器在編譯時決定,而非函數(shù)運行時動態(tài)分配。另外全局靜態(tài)區(qū)的變量生命期與整個進程的生命期相同,大于等于函數(shù)的生命期。

總結

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

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