const char * ptr1 = "fine.";
const char ar[] = "fine.";
以上的聲明中,ptr1和ar都是該字符串的地址,但這兩種形式並不完全相同。
初始化數組:
字符串儲存在靜態存儲區。但是,程序在開始運行時纔會爲該數組分配內
存(以上面的聲明爲例,數組形式ar[ ]在計算機的內存中分配爲一個內含6
個元素的數組(每一個元素對應一個字符,還加上一個末尾的空字符‘\0’))。此時,
纔將字符串拷貝到數組中。
注意:此時字符串有兩個副本。一個是在靜態內存中的字母串字面量,一個是儲存在ar1數組中的字符串。
初始化指針:
指針形式也使得編譯器爲字符串在靜態內存區預留6個元素的空間。
程序開始執行時,它會爲指針變量pt1留出一個儲存位置,並把字符串的地址儲存在指針變
量中。
總之,初始化數組把靜態存儲區的字符串拷貝到數組中;而初始化指針只把字符串的地址拷貝給指針。