#includeint main(){ int a = 5; int b = 6; //1.指针p存放了变量a的地址,*a = 5; int *p = &a; //2.指针p存放了变量b的地址,*b = 6; int *q = &b; int c = 7; //3.指针m存放了变量c的地址,*m = 7; int *m = &c; printf("&a = %pn",&a); printf("&b = %pn",&b); printf("&c = %pnn",&c); printf("p = %pn",p); printf("q = %pnn",q); //4.指针p指向指针q,指针p存放指针q的地址;p和q指向同一个地址&b p = q; printf("p = %pn",p); printf("q = %pnn",q); //5.指针q指向指针m,指针q存放指针m的地址; //注意:本来指针q指向的是&b的地址,但是被覆盖了,现在指向指针m,即&c的地址;q和m同时指向&c q = m; printf("p = %pn",p); printf("q = %pn",q); printf("m = %pnn",m); //6.二级指针 int **t = &m; //&m表示:指针m自己本身的地址,赋值给了二级指针t;所以t指向&m,即t保存了&m的地址。 printf("&m = %pn",&m); printf("t = %pn",t); //*t:存放的是m指向的地址&c printf("*t = %pn",*t); //**t:二级解引用,取到的是c的值,等于7. printf("**t = %pn",**t); }
打印:
&a = 0x7ffe1e6549ac &b = 0x7ffe1e6549b0 &c = 0x7ffe1e6549b4 p = 0x7ffe1e6549ac q = 0x7ffe1e6549b0 p = 0x7ffe1e6549b0 q = 0x7ffe1e6549b0 p = 0x7ffe1e6549b0 q = 0x7ffe1e6549b4 m = 0x7ffe1e6549b4 &m = 0x7ffe1e6549b8 t = 0x7ffe1e6549b8 *t = 0x7ffe1e6549b4 **t = 0x7



