劍指offer-數據結構:字符串(基礎知識)

爲了節省內存,C/C++把常量字符串放到單獨的一個內存區域。當幾個指針賦值給相同的常量字符串時,它們實際上會指向相同的內存地址。但用常量初始化數組,情況卻有所不同。

#include<iostream>

using namespace std;

int main()
{
    char str1[] = "hello world";
    char str2[] = "hello world";

    char* str3 = "hello world";
    char* str4 = "hello world";

    if( str1==str2 )
        cout << "str1 == str2 " << endl;
    else 
        cout << "str1 != str2 " <<endl;

    if( str3==str4 )
        cout << "str3 == str4 " << endl;
    else
        cout << "str3 != str4 " << endl;
    return 0;
}

可以先猜一下,輸出的結果是什麼。

str1 和 str2 是兩個字符串數組,會爲它們分配兩個長度爲12個字節的空間,並把內容分別複製到數組中去。這兩個初始地址不同的數組,str1 和str2的值也不同。

str3 和str4是兩個指針,無須爲它們分配內存以存儲字符串的內容,而只需要把它們指向常量字符串在內存中的地址就可以。因此str3和str4指向的是同一個地址

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