C语言基础指针问题。

我想问下C语言中,定义了指针类型 int * a,然后定义了变量 int b;
但是没有将指针a指向b的地址,两者没有关系
一般如果有将指针变量a=&b,的话,a就指向了b的地址
a就等于b变量,
那么a没有指向b的情况下,
a代表什么呢?

例如:若有说明,long *p,a,则不能通过scanf语句正确给输入项读入数据的程序段
*p = &a; scanf("ld",p);

就像上面一样,*p=&a, *p是代表什么呢?还有错在哪里嘞?

你定义了一个指针,但是没有给它指向任何位置
这就相当于你定义了一个int型的变量,但是没有给它赋初值
但是只要它分配了内存就会有值,只不过是不知道什么程序运行残留的随机值
指针也一样,它会有个值,指向一个内存随机地址
就是通常所说的野指针
如果你的指针是个野指针,它指向的不是你的程序申请的内存,而是系统其它内存
那你在给它赋值的时候,就是要胡乱去改内存里一个值,这种操作是受系统保护的,不允许你随便乱改的

那么a没有指向b地址的情况下,a代表什么呢?
int * a 实际就是定义了一个整型变量,但整型变量的值没有设置,分配到哪一块内存,这块内存原来是什么值,那么a的初始值就是这个值。因此初始值具有随机性,一般都建议要初始化,比如等于NULL
当写 a = &b时,实际就是将b变量地址复制到a变量。当使用a指针时,就是通过这个整型变量表示的地址,去找到实际的对象所在空间

应该是p = &a