求教一个指针的问题.谢谢!

写了一个简单的例子,代码中数组a赋值给指针state后,为什么a数组中的数值会保存指针的数值一直为1?
对指针state进行赋值会把数值给到数组a中?有点迷糊了。 数组a和指针state的地址共用了?

#include <stdio.h>
#include <stdlib.h>

static int a[16] = {0};

int main()
{
    while(1)
    {
        sleep(3);
        int *state = NULL;
        state = a;
        int tmp = state[1];
        if(tmp == 0)
        {
            printf("state = %d\n", tmp);
            state[1] = 1;
        }
        if(tmp == 1)
        {
            printf("state = %d\n", tmp);
        }
    }
    return 0;
}

指針存只是一个地址,你把a赋给了state,state存的地址和a的地址是一样的,所以改变state的值其实就是在改变a

指针确实是一个地址,你在调用state时会自动调用到a的地址然后读取a