char陣列和char指標的使用區別和一些注意事項
阿新 • • 發佈:2018-11-09
const用法
const char* p;表示p是一個指向常量字元的指標
char* const p;表示p是一個指向字元的常量指標,p是不允許改變的
另外要注意的是
const char* p等價於 char const *p
也就是說const描述char和*p是等價的
char* p的記憶體分配方式
char* p_char=“123”;
上面的程式碼相當於是在常量區儲存一個"123",然後建立一個指標p_char指向這個區域
這樣建立的p_char是一個常量,在程式執行結束之後才會銷燬。
在部分編譯器裡面,會報如下問題,即不能把字串常量轉變為char*
warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
如果要解決這個問題,需要在char*前面加上const,讓兩者型別一致即可。
p_char[0]="4";錯誤做法,常量區的內容不能修改,所以感覺char* p方法定義的變數不能傳入strcmp()之類的函式裡面。<br>
p_char="1234";正確做法,指標指向的地址是可以修改的。<br>
char[] 的記憶體分配方式
char[] p_array=“123”;相當於在常量區儲存一個"123",然後在棧區申請記憶體,把"123"複製過來,p_array指向棧區的"123"
這樣建立的p_array存放在棧區,程式碼執行結束之後就會銷燬。