1. 程式人生 > >char陣列和char指標的使用區別和一些注意事項

char陣列和char指標的使用區別和一些注意事項

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存放在棧區,程式碼執行結束之後就會銷燬。