《C语言 —— 指针的指针的实际应用场景》

1.指针的用处

int a=3;
int *x = &a;

  以上是一个指针的赋值,指针变量x作为变量a的索引。

  

2.指针的指针

  首先要搞明白一个概念,指针也是一个变量,也会占用存储空间。通过我们*p指向的是一份普通类型的数据,例如int、double、char等,但也可以指向一份指针类型的数据,例如int *、double*、char*等。那么如果一个指针指向的是另一个指针,那么我们就称它为二级指针,或者指向指针的指针

  假设有一个 int 类型的变量 a,p1是指向 a 的指针变量,p2 又是指向 p1 的指针变量,它们的关系如下图所示:

  

int a=100;
int *p1=&a;
int **p2=&p1;

  

3.指针的指针的应用场景

  如果要在一个函数的参数中改变一个指针的值,就只能传这个指针的指针给这个函数。

int *p

eg1:
void  f(int **pp)
{
  *pp++;  
}

int main(void)
{
  f(&p);  
}


eg2:
void f(int *pp)
{
  *pp++;  
}

int main(void)
{
  *pp++;  
}

  以上例程想要在函数f中对p这个指针增量(是地址增量,而不是指针所指向内容+1)。那么只能用例程1中。

  比较明显的一个作用,就是减少函数传参。不然还需要传一个*index,来指示函数调用后的内存偏移量,传**进去,函数调用后,指针就自动指向偏移后的地址了。  



posted @ 2020-01-10 16:37  一个不知道干嘛的小萌新  阅读(1828)  评论(0编辑  收藏  举报