2014-10-28 83 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"