&a 与 &a + 1的区别

如下题所示:

 

     int a[11] = {1,2,3,4,5,6,7,8,9,10,11};

     int *ptr = (int*)(&a +1);

     cout << *(a+1) << endl;

     cout << *(ptr - 3) << endl;

 

请解释以上代码的输出结果:

 

    2

    9

 

  解析:

 

    int a[11] = {1,2,3,4,5,6,7,8,9,10,11};

    cout << "*a         = " << *a << endl;

    cout << "*(a+1)     = " << *(a+1) << endl;

    cout << "&a         = " << &a << endl;

    cout << "&a[0]      = " << &a[0] << endl;

    cout << "&a[8]      = " << &a[8] << endl;

    cout << "&a[10]     = " << &a[10] << endl;

    cout << "&a + 1     = " << &a +1 << endl;

    int *ptr = (int*)(&a +1);

    cout << "ptr        = " << ptr << endl;

    cout << "ptr[-3]    = " << ptr[-3] << endl;

    cout << "(ptr-3)    = " << (ptr-3) << endl;

    cout << "*(ptr - 3) = " << *(ptr - 3) << endl;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值