指针使用前必须初始化,否则不知道指到哪里,有可能指到不存在的空间,也可能指到一个已存在的空间,第一个能报错,第二个
int *p;
int a[10];
p=&a[0];
这是一种初始化,好理解一些。
但是实际使用的时候很多时候写成下面这样
int a[10];
int *p=&a[0];
这种我一开始很不理解,因为 p明明是表示a[0]存放的变量,而p才是存放地址的,运算符 * 是间接寻址或者间接引用运算符,怎么可以把&a[0]的地址赋值给p呢(即把a[0]地址赋值给a[0]存放的变量数值),可能C的设计者为了简化代码特殊设计的,所以我们遇到这种自己想成两步就好了, 即 int *p; p=&a[0],有时候简化的代码真的很容易让人困惑。
不知道这样理解对不,如果不对希望大神留言解答一下,怎么理解比较合适。