如下题所示:
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;
本文通过一个具体的C++代码示例详细解释了数组与指针的关系,展示了如何使用指针指向数组的不同位置,并输出特定元素的值。通过代码运行结果帮助读者理解指针算术及内存地址的概念。

被折叠的 条评论
为什么被折叠?



