1
2
3
int *p;//表示我们声明了一个指针变量,名字叫p,*只是说明这是一个指针变量,而不是普通变量。
int* p1;//*的位置可以挨着数据类型,也可以单独空一格
int * p2;
注意:
1
2
3
4
int *p3;//*在这里只是说明这是一个指针变量,而不是普通变量。
int *p4;//p4只能存储int类型的变量的地址
float *p5;//p5只能存储float类型的变量的地址
double *p6;//p6只能存储double类型的变量的地址
指针变量名也是一个标识符,也需要符合变量的命名规则和规范。一般情况下,我们变量名都以p开头,这样让别人一眼都能看出是指针变量。
1
2
int *p1,p2,p3;//是错误的,这样声明的只有p1才是指针变量,p2,p3是int类型普通变量
int *p1,*p2,*p3;//这才是正确的。
三、指针变量的初始化
指针变量中只能存储和指针变量类型相同的变量的地址,所以不能直接给指针变量赋值一个其他非地址的数据。使用&取地址运算符可以获取变量的地址。
语法:数据类型 *指针变量名 = 相同数据类型的变量的地址;
1
2
3
int num = 10;
int *p = #//获取num的地址并赋值给指针变量p
int *p1 = p;//将p中存储的值赋值给新声明的指针变量p1。等价于 int *p1 = #
通过指针变量访问指针变量指向的普通变量,使用*取值符来取出指针变量指向的普通变量。
1
2
3
4
int num = 10;
int *p = #//将num的地址赋值给指针变量p
*p = 20;//把20赋值给了p指向的num,这里的*p表示取出指针(p)的值(num的地址)的变量(num变量)。
printf("num = %d\n",num);//打印 num = 20
注意: