#include <iostream>

using namespace std;

int main(){
    
    char c;
    //数组在c++里面可以被称为数组指针 而且指针可以做运算
    int a[5] = {1, 2, 3, 4, 5};
    //如果换成char数组的话 每个变量地址差的就是1了因为每个char变量是1字节
    
    cout << (void*)&c << endl;
    cout << a << endl;//a其实就是c的下一个地址
    //char数组直接输出会输出字符串 所以要加强制转换
    // cout << (void*)a << endl;




    for(int i = 0; i < 5; i++){
        cout << (void*)&a[i] << endl;
    }//每次运行程序的地址可能都不一样
    //为什么是00 04 08 0c 10因为int的每一个变量 都是4个字节
    //00到 04是a[0] 04到08是a[1] 08 到0c是a[3] 0c到10是a[4]
    
    //所以我们可以发现数组就是个指针 这个指针的值就是数组当中第一个变量的地址
    //因为要支持这个随机索引所以不管是在栈空间和堆空间中 数组的地址都是连续的一段
    return 0;
}