标签:
#include <iostream> using namespace std; /** * 从结果中可以看出,&a、a、&a[0]表示的是同一地址,但是级别是不一样的。 &a+1地址与&a相比,偏移了12个字节,即声明数组的空间大小; a+1地址与a相比,偏移了4个字节,即数组中一个元素的空间大小; &a[0]+1地址与&a[0]相比,偏移了4个字节,即数组中一个元素的空间大小; 也就说&a、a、&a[0]虽然都表示同一地址,但是编译器会区分它们,&a指向整个数组的地址, 是数组中最高级别的地址,而a和&a[0]表示&a代表地址的下一级别的地址。 */ int main() { int a[3] = { 1, 2, 3 }; cout << &a << endl; // &a 取地址 cout << a << endl; // a 取地址 cout << &a[0] << endl; // &a[0] 取地址 cout << a[0] << endl; // 指的是下标为[0]的数组的内容 cout << &a + 1 << endl; // &a+1 偏移了12个字节,即声明数组的空间大小; cout << a + 1 << endl; // a+1地址与a相比,偏移了4个字节,即数组中一个元素的空间大小; cout << &a[0] + 1 << endl; // &a[0]+1地址与&a[0]相比,偏移了4个字节,即数组中一个元素的空间大小; cout << a[0] + 1 << endl; // 指的是下标为[1]的数组的内容 system("pause"); return 0; }
标签:
原文地址:http://www.cnblogs.com/H-BolinBlog/p/5627520.html