【C语言篇】No2指针变量
1.啥是指针变量?
2.指针变量咋定义呢?
定义指针变量与定义普通变量非常类似,不过要在变量名前面加星号 * ,格式为:
datatype *name; 或者 datatype *name = value;
如:
int *p1;//也或者:int a = 100;int *p = &a;
如:
//定义普通变量float a = 99.5, b = 10.6;char c = '@', d = '#';//定义指针变量float *p1 = &a;char *p2 = &c;//修改指针所指向的地址p1 = &b;p2 = &d;
这里需要注意: * 是一个特殊符号,表明一个变量是指针变量,定义 p1、p2 时必须带 * 。而给 p1、p2 赋值时,因为已经知道了它是一个指针变量,就没必要多此一举再带上 * ,后边可以像使用普通变量一样来使用指针变量。也就是说,定义指针变量时必须带 * ,给指针变量赋值时不能带 * 。
并且:p1、p2 的类型分别是float*和char*,而不是float和char。
3.咋通过指针取数据呢?
如:
int a = 15;int *p = &a;printf("%d, %d\n", a, *p); //两种方式都可以输出a的值
输出:15,15
3.咋通过指针修改数据呢?
int main(){int a = 15, b = 99, c = 222;int *p = &a; //定义指针变量*p = b; //通过指针变量修改内存上的数据c = *p; //通过指针变量获取内存上的数据printf("%d, %d, %d, %d\n", a, b, c, *p);return 0;}
输出: 99,99,99,99
*p 代表的是 a 中的数据,它等价于 a,可以将另外的一份数据赋值给它,也可以将它赋值给另外的一个变量。
再如:通过指针交换两个数据
int main(){int a = 100, b = 999, temp;int *pa = &a, *pb = &b;printf("a=%d, b=%d\n", a, b);/*****开始交换*****/temp = *pa; //将a的值先保存起来*pa = *pb; //将b的值交给a*pb = temp; //再将保存起来的a的值交给b/*****结束交换*****/printf("a=%d, b=%d\n", a, b);return 0;}
4.容易晕的地方
*&a 和 &*pa
