字符串--用數組初始化和用指針初始化方法區別

const char * ptr1 = "fine.";
const char ar[] = "fine.";

以上的聲明中,ptr1和ar都是該字符串的地址,但這兩種形式並不完全相同。

初始化數組:

字符串儲存在靜態存儲區。但是,程序在開始運行時纔會爲該數組分配內

存(以上面的聲明爲例,數組形式ar[ ]在計算機的內存中分配爲一個內含6

個元素的數組(每一個元素對應一個字符,還加上一個末尾的空字符‘\0’))。此時,

纔將字符串拷貝到數組中。

注意:此時字符串有兩個副本。一個是在靜態內存中的字母串字面量,一個是儲存在ar1數組中的字符串。

初始化指針:

指針形式也使得編譯器爲字符串在靜態內存區預留6個元素的空間。

程序開始執行時,它會爲指針變量pt1留出一個儲存位置,並把字符串的地址儲存在指針變

量中。

總之,初始化數組把靜態存儲區的字符串拷貝到數組中;而初始化指針只把字符串的地址拷貝給指針。

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