2014-10-28 110 views
0

我正在查看一個實踐問題,我不明白C++如何到達它給我的答案。我理解指針在初始化爲「int」類型時如何與數組一起工作,但當它是「char」類型時完全拋棄。 char給我的結果有什麼不同?陣列作爲使用2D Char陣列時的指針

爲什麼b和& b一樣?當我問b時,我認爲它與詢問b的第一個元素的數組地址是一樣的嗎?此外,當添加到B我要求該元素的地址是正確的?

#include <iostream> 
using namespace std; 

int main(){ 
    char b[5][7]; 

    cout<<sizeof(b)<<endl; //output 35 

    cout<<sizeof(b+1)<<endl; //output 8 

    cout<<sizeof(*(b+1))<<endl; //output 7 

    cout<<"the address of b is"<<b<<endl; 

    cout<<"the address of b+2 is"<<b+2<<endl; 

    cout<<"the address of &b is"<<&b<<endl; 

    cout<<"the address of &b+2 is"<<&b+2<<endl; 

    return 0; 
} 

回答

0

沒有爲char *一個特殊的過載而不是其他任何指針類型,這是用於輸出C風格的字符串。實際上你用它來輸出文字"the address of b is"