先看一段代码:
1 #include <stdio.h> 2 3 int main () 4 { 5 int i = 30; 6 int* pi; 7 int** ppi; 8 9 pi = &i;10 ppi = π11 12 printf("i = %d;\t &i = %d\n", i, &i);13 printf("pi = %d;\t &pi = %d;\t *pi = %d\n", pi, &pi, *pi);14 printf("ppi = %d;\t *ppi = %d;\t &ppi = %d;\t **ppi = %d\n", \15 ppi, *ppi, &ppi, **ppi);16 17 return 0;18 }
执行结果:
i = 30; &i = -1013781316
pi = -1013781316; &pi = -1013781328; *pi = 30
ppi = -1013781328; *ppi = -1013781316; &ppi = -1013781336; **ppi = 30
下面用一个简单的图来说明一下:
定义指针类型时,用下面的格式,感觉更容易理解:
int *p; => int* p;
int **pp; => int** pp;
=>右边的写法可以更加明确的看出int*, int**是变量类型,p, pp是变更名。
来源:https://www.cnblogs.com/cnhome/archive/2011/03/31/2001151.html