如下题所示:
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;