回 帖 发 新 帖 刷新版面

主题:问个int a[]的问题

有个问题一直困惑了我很久:
int a[]={1,2,3};
cout<<a<<endl;
cout<<&a<<end;
为什么这两个输出的结果是一样的呢?
单纯 a 这个符合在C++中会解释成为什么呢?
如果是解释为地址,那么为什么还可以 &a 呢?
如果不是,那是什么呢?
不知道我的问题问清楚没有了,谢谢.

回复列表 (共1个回复)

沙发

a就是&a[0],类型是int *;而&a的类型是int(*)[3](可以参考二维数组)

当然,cout这里输出的都是地址本身的值,都是一样的
观察下面程序更能加深你的理解
#include <iostream>

using namespace std;

int main()
{
    int a[]={1,2,3},*p,*q;
    p=a;
    q=&a[0];
    cout<<p<<endl;
    cout<<q<<endl;
    cout<<a<<endl;
    cout<<a+1<<endl;
    cout<<&a<<endl;
    cout<<&a+1<<endl;
    //cout<<++a<<endl; //语法错,常量不能做++运算
    //cout<<++&a<<endl;//语法错,常量不能做++运算
    return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册