指向单一变量的指针 及其 二级指针
一.整型
1.指向单一变量的指针 及其 二级指针
1 #include <stdio.h> 2 int main() 3 { 4 int a=10; 5 int *ptoa; 6 int **ptopa; 7 ptoa=&a;ptopa=&ptoa; 8 printf("&ptopa:%d ",&ptopa); 9 printf("&ptoa:%d,ptopa:%d ",&ptoa,ptopa); 10 printf("&a:%d,ptoa:%d,*ptopa:%d ",&a,ptoa,*ptopa); 11 printf("a:%d,*ptoa:%d,**ptopa:%d ",a,*ptoa,**ptopa); 12 return 0; 13 }
运行结果:
&ptopa:2686724
&ptoa:2686728,ptopa:2686728
&a:2686732,ptoa:2686732,*ptopa:2686732
a:10,*ptoa:10,**ptopa:10
等价关系:
1.&ptopa 即二级指针地址
2.&ptoa=ptopa 即指针地址
3.&a=ptoa=*ptopa 即变量地址
4.a=*ptoa=**ptopa 即变量内容10
小结:
明确:1.变量名 2.地址 3.内容
机器存储的只有地址和内容.在代码中,变量名=内容
例如 int a=10;a即为10
int *p=&a;指针存储的为a的地址,即内容为a地址,变量名p即为a的地址
两个重要符号1.取址符& 2.解释符*
简略表格
int a | int *ptoa | int **ptopa | |
地址 | &a | &ptoa | &ptopa |
内容 | a=10 | ptoa=&a | ptopa=&ptoa |
加解释符 | *ptoa=*(&a)=10 |
*ptopa=*(&ptoa)=ptoa=&a **ptopa=*(*ptopa)=*(&a)=a |