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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章