C语言指针/指向指针的指针

先看一段代码:

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 = &pi;
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/p/2001151.html