zoukankan      html  css  js  c++  java
  • 《指针的指针的实际应用场景》

    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,来指示函数调用后的内存偏移量,传**进去,函数调用后,指针就自动指向偏移后的地址了。  

    
    
    
  • 相关阅读:
    GithubPlus+PicGo + Typora 一键式图床
    快速掌握Linux这篇文章就够了。
    跨行程序员Java进阶--基础语法
    Prometheus(普罗米修斯)
    【学习记录】Golang
    服务器Docker-Compose 安装 Anaconda
    Kubernetes集群部署
    Jenkins部署
    Harbor部署
    Docker、Docker-Compose的安装以及相关使用
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/12176833.html
Copyright © 2011-2022 走看看