&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;
?
?