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