先看一段代码:
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是变更名。