1. 指针与指针变量不一样
int *p;
int a;
p是一个指针,也可以理解为一个地址。*p是一个变量,在int *p与int a中*p与a同为变量。
地址跟变量肯定不一样的,所以指针与指针变量不一样。
简单来说就是:指针是一种类型,指针变量是指针类型的变量。
2. 指针相关符号&,*分析:
int a,*p;
我们知道p是指针,*p是变量,那么*是不是就可以理解为取地址p上面的值。既*为取值符。
*p = a; //p指针指向变量a
p = &a; //就是把a地址给p,"="两边类型相同,既两边都是地址
就是&为取地址符。
p与&a都是地址,*p与a都是变量。
3. 指针与数组
int *p;
int a[5];
p = a; //指针p指向数组a
我们知道p是地址,a代表数组a的首地址。既:
p = a; //与p = a[0]是一样的
a[5]里面有5个元素对应5个地址,并且地址是连续的。
p+1代表指针p移动一个地址(一般为4个字节),如果p对应a[0]的首地址,那么p+1对应的就是a[1]的地址。
a[0+1]即a[1],a[0]地址的下一个地址就是a[1]的地址;
两个地址是相同的。所以p+1 = a[1]。