因为str是一个字符数组,cout<<重载了字符数组的操作。

解决方案 »

  1.   

    我刚开始也困扰过都是  cout << 结果不一样
    << 运算符重载了。
      

  2.   

    谢谢!!!
    就是当‘ << ’后面接的是整型指针时输出指针记录的地址,是字符型指针时它就输出字符直到遇到‘ \0 ’结束是吧?
    那么如果我要输出字符型指针记录的地址应该怎么写呢?
    还有,编译器怎么识别它是整型指针还是字符型指针呢?当我们建立一个指针时系统做了什么?好像第二句(int* p1=a;),系统分配4个字节的空间给指针p1,并在里面记录a的地址,然后系统还做了什么呢?
    谢谢了,好想弄明白到底是怎样一个过程。
      

  3.   

    #include<iostream>
    using namespace std;
    void main()
    {
    int a[]={1,2,3,4}; //第一部分
    int* p1=a;
    cout<<p1<<endl;
    cout<<a<<endl;char str[]="wang"; //第二部分
    //char str[]={'w','a','n','g','\0'};
    char* p2=str;
    cout<<(int)p2<<endl;
    cout<<(int)str<<endl;//强制转一下就可以了~
    }