二级指针,指向指针的指针

我们先来看一个例子:

int a=0;

int *b=&a;

假设我们有第三个变量时:

c=&b;

c的类型显然是一个指针,变量b是一个”指向整形的指针”,所以任何指向b的类型必须是指向“指向的指针”的指针,更通俗的来讲就是指针的指针。

它合法吗?

指针变量和其他变量一样,占据内存中某个特定的位置,所以用&操作符取得他的地址是合法的。

这个变量声明为:

int **c;

所以将他们写在一起,将会是这样的:

int    a=0;

int    *b=&a;

int     **c=&b;

我们知道*操作符具有从右向左的结合性,所以,这个表达式相当于*(*c),我们必须从外向内逐层求解。

当然,我们要进一步学习关于二级指针的知识,单单到这一程度是完全不够的,我们需要一些更加通用的例子来了解它。

例:

int   i;

int   *pi;

int    **ppi;


那么有了上面这些信息之后,我们来看一些语句

ppi=π

这条语句把ppi初始化指向变量pi。以后我们就可以安全的对ppi执行间接访问操作了。

*ppi=&i;

这条语句把pi(通过ppi间接访问)初始化指向变量i,接下来后,下面这些语句将会有相同的效果:

i=‘a’;

*pi=‘a’;

**ppi=‘a’;


猜你喜欢

转载自blog.csdn.net/bailerong123/article/details/79532730