1.首先要明白,变量储存常量,(变量之所以叫变量就是因为其中储存的常量是可以变化得),如:
int a; a=10;
其中a为变量,10为常量,a储存了10
而指针变量,也储存常量(即其它变量的地址,也叫作指针)
2.为将指针变量和普通变量区分,加了‘ * ’,例如:
char* p;
p=&a;
其中,
①char为指针变量的基地址,此处a变量类型只能是char
②星号只是类型的一部分,p才是变量名。因此,a的地址&a是赋给p而不是p
③一般写char,将星号紧紧接在char后面
④或者也可以写为 char* p=&a;
⑤多个变量
如果 char*p1,p2;
则只定义了p1为指针变量,p2为普通的char变量
而当 char *p1,*p2;
则p1、p2都为指针变量
同时赋值也行 char *p1=&a,*p2=&b;
⑥可以用“钥匙”——‘ * ’,来提取指针变量所指向变量的值
a=233;
printf("%c",*p);
printf("%d",p);
输出结果为
233
6487623
⑦支持指针变量进行加减运算
两指针变量相减的结果为 两个指针所指向的元素的地址的偏移距离
而
printf(“%d\n”,p);
printf("%d\n",++p);
printf("%d\n",p+1);
输出结果为
6487623
6487624
6487625
“+1”是a下一个元素的地址,故跨越了1Byte;
如果为int a;int*p=&a; 则输出结果会变为会为
6487620
6487624
6487628
因为此时a的下一个元素的地址,跨越了int型的4Byte