C語言中字串定義與文字常量區

2021-10-08 20:16:59 字數 1338 閱讀 1874

c語言的記憶體組織方式

1>**區,存放可執行**

2>全域性儲存區,存放所有全域性變數和靜態變數

3>文字常量區,常量字串

4>堆區,malloc,new

5>棧區,區域性變數、函式形參,棧區變數的位址不可通過函式返回

c語言中字串定義形式

char

*n =

"hello"

;char a=

"hello"

;1. 變數n位於棧上,其內容是乙個位址,指向位於文字常量區的「hello」,此時「hello」在記憶體中只有乙份拷貝;

2. a位於棧區,有6個元素(含字串末尾的空字元)的陣列,將「hello」拷貝到它所佔的記憶體中,此時「hello」有兩份拷貝。

3. 文字常量區的內容不能修改

4. 文字常量區相同的字元共用記憶體,有效防止重複內容占用記憶體

5. 棧區函式結束時就釋放,文字常量區程式結束釋放

6. a陣列可通過a[i]下標修改;n位於文字常量區,不可修改,下標修改報錯

#eg1

#include

char

*test1()

char

*test2()

intmain

(int argc,

char

const

*ar**)

****

****

****

****

****

*執行結果***

****

****

****

****

****

****

***abc

ig˳�����

0x10fc84fa6

0x7ffedff7b94c

#eg2

//eg2:

intmain

(int argc,

char

const

*ar**)

****

****

****

****

****

**執行結果***

****

****

****

****

****

****

****

***0x7ffee3519963

0x10c6e6f96

aacd

bus error:

10可參考: https:

99a9756d70b9

C 語言中的文字常量區

程式設計過程中,遇到這樣乙個問題,於是求教別人,自己又查閱了一些資料。先總結一下。問題 如果改為 則執行正確,百思不得其解後,通過一上午的查閱資料,終於找到答案。我做了乙個測試程式,截了乙個圖,答案都在下面 答案已經全部在圖上。總結 1.char p hello 是在編譯時就要確定字串的內容。cha...

c語言字元常量和字串常量 C語言中的字元常量

c語言字元常量和字串常量 any character a single character that is enclosed within the single quotes like,a is calledcharacter constants in c programming language....

c語言中字串的定義與輸出

c語言中沒有專門的字串變數,如果要將乙個字串存放在變數中,必須使用字元陣列,即用乙個字元型陣列來存放乙個字串,陣列中每乙個元素存放乙個字元。定義 char c 10 字元型與整型互相通用,因此 int c 10 也可以定義字元陣列。但由於兩種型別分配位元組不同,用整型來定義會浪費空間,另外這樣定義實...