字串指標:
1 書寫格式
const
char
* p =
"abcdef"
;//必須使用const
記憶體四區包含**區、棧、堆、全域性區。全域性區內儲存常量、全域性變數、靜態變數,堆中存放使用new後者malloc動態申請儲存空間 儲存的變數,棧中存放區域性變數,可由程式釋放。
為什麼要加const修飾符?因為「aaaaa」字串儲存在 常量區,不能被改變。因此採用const char* p的形式。下面的做法是錯誤的:
p[0]
='a'
;
2 訪問
1)直接輸出p,遇到\0停止輸出
const
char
* p =
"abcdef"
;cout << p << endl;
//直接輸出
abcdef
請按任意鍵繼續.
..
2)使用訪問單個字元
const
char
* p =
"abcdef"
;cout << p[3]
<< endl;
//使用訪問
d請按任意鍵繼續...
p[0]=
'a';
//此種寫法是錯誤的
2 可修改指標指向的字串
const
char
* p =
"abcdef"
;cout << p << endl;
cout << p[3]
<< endl;
p ="hijklmn"
;//修改指向
cout << p << endl;
system
("pause");
abcdef
dhijklmn
請按任意鍵繼續.
..
3 可以對指標進行修改
const
char
* p =
"abcdef"
;cout << p << endl;
cout << p[3]
<< endl;
p ="hijklmn"
;cout << p << endl;
p = p +1;
//指標修改
cout << p << endl;
system
("pause");
abcdef
dhijklmn
ijklmn
請按任意鍵繼續.
..
總結:字元陣列:字串指標可以指向不同的字串,但是不能修改字串的值,類似於const char* p;
字串指標可以進行運算,或者通過訪問;
字串指標可以直接通過輸出指標來輸出內容;
字串指標=賦值時,要檢查是否是null,並且先釋放舊空間,並建立新空間;
字串在全域性區,而指標在棧。
1 書寫格式
char str=
"abc"
;
字元陣列的名str,可以當成常量指標看待,類似於char *const p,也就是陣列名不能執像指標似的指向新的字串,也不可以做運算。可以修改的是分配的記憶體空間,其分配的記憶體空間在棧中,長度固定。
上面的形式,雖然是整體「abc」賦值,但是實際上是拆分開後進行的賦值:
char st=
;
2 訪問
cout << st[0]
<< endl;
cout << st << endl;
cout << st +
1
bcst = st +1;
//錯誤,st不能改變
st =
"asd"
;//錯誤,不能像指標變數改變指向,只能通過乙個乙個元素的改變
總結:字串陣列與字串指標相反,可以更改字串內容,但是不能進行整體賦值,只能乙個乙個的賦值,類似於char* const p;
字串陣列名稱不能進行運算;
字串陣列記憶體空間在棧中。
C 字元 字串 字元陣列 字串指標 指標陣列
一 c 字元 字串 字元陣列 字串指標 指標陣列 前言 一 字元指標 字元陣列 二 字串指標 三 字串 指標陣列 四 常用方法 參考為了深入理解c 並時常回顧學過的知識點,對c 知識點進行記錄總結。參考1字元指標的儲存方式 字元指標變數本身是乙個變數,用於存放字元 字串的首位址。字串本身是存放在以該...
C 字串指標與字串陣列
在做面試100題中第21題時,發現char astr abcdefghijk 0 和char astr 有點區別,以前一直以為是一樣的,但是在該程式中採用字串指標執行一直出錯。後來在網上查查,果然發現大大的不同。分析 當你需要修改字串時,採用指標指向該字串編譯通過但是執行出錯,而採用字串陣列時不會出...
C 字串指標與字元陣列
visual studio 2012 系統分配時儲存位置不一樣 字串指標在初始化時儲存在靜態區是常量,初始化後不能修改 字元陣列 是存放在棧中的,值是可以修改的 include stdafx.h include include include include include include char...