c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较
先看如下代碼:
以上用兩種方式定義一個字符串:
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机高一基础知识大全,计算机基础知识大
- 下一篇: Rose双机热备两款软件原理介绍以及共享