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 也可以定義字元陣列。但由於兩種型別分配位元組不同,用整型來定義會浪費空間,另外這樣定義實...