考慮的碼兩個下列行:const char * const和const char []之間有區別嗎?
const char *ptr = "Hello";
char arr[] = "Hello";
有關指針定義,"Hello"
字符串文字基本上不可改變,但ptr
變量本身可以改變並保持不同的地址。
對於陣列定義,"Hello"
字符串文字是複製到陣列的位置,但arr
不能點到不同的位置;然而,由數組保持的字符串是可變的,因此可以改變。
現在考慮的代碼如下兩行:
const char * const ptr = "Hello";
const char arr[] = "Hello";
這裏,兩個字符串不變爲const char
預選賽的結果 - 更有趣,但:有ptr
定義爲一個常量指針,它不能指向一個不同的地址。
這兩行代碼是否會導致相同的行爲?如果最終效果是相同的,那麼在實現中是否存在理論上的差異 - 例如,指針方法是否爲匿名數組分配內存以保存除指針本身外的字符串,而數組方法僅爲內存分配陣列?
差異:1.數組不是指針,2.指針不是數組,3.'sizeof()' – 2013-04-29 21:21:11