指针变量
指针变量: 本身也是一个变量,用来存储在内存中的地址。
普通变量: 本身也是一个变量,用来存储数据本身的值。
定义
因为C语言是一种相对自由形式的语言,相信你在一些指针代码中可以看到下面两种定义,其实他们是等价的。第二种定义是不是看起来更舒服,更能理解指针的含义呢。其实可以看成一个指针变量pb,他的指针类型是int*。
int *pb;
等价于
int* pb;
但是下面这种看似很舒服的定义在下面这种情况可能会引起另一个误解。下面是这种案例
int* pa, pb, pc;
等价于
int pb, pc, *pa;
等价于
int *pa;
int pb, pc;
现在可以理解定义了吗,如果还是一头雾水,不妨结合下面例子 去理解。
int pa = 10;
int *pb = &pa;
printf("value pa = %d\n", pa);
printf("value *pb = %d\n", *pb);
printf("value &pa = %d\n", &pa);
printf("value pb = %d\n", pb);
printf("value &pb = %d\n", &pb);
printf("value *&pb = %d\n", *&pb);
输出
value pa = 10
value *pb = 10
value &pa = 651283788
value pb = 651283788
value &pb = 651283776
value *&pb = 651283788
我们可以看到*pb 和pa 是等价的,pb ,&pa,&*pb是等价的。