• C语言(关于二级指针)


    在学数据结构链表的初始化时碰到了二级指针,一开始十分陌生这种用法不知其意思,经过初步学习了解了其大意。

    一级指针与二级指针的意义

    一级指针

    int x = 1;

    int *a       //定义了一个指向int 型变量的指针a;

      a = &x;

      

    1.a即指 x 的地址 

    2.*a其实就是a指向的内容, ,*a即为X,可以做左值也可以做右值,对其操作都等同于对X操作

    二级指针

    int x= 1;

    int *a;

    int **b;

    b=&a;

    1.b是指针a的地址,b是指向指针a的指针;

    2.*b代表指针a,  如果令: int c = 5; *b = &c;   相当于将指针a指向了c;

    3.**b代表了指针a指向的int型变量x,   如果令:**b = 2; 相当于将 x = 2;

    为什么存在二级指针?何时使用

    一级指针

    当需要改变的是指针指向的值时

    例:当用变量作为参数传给函数,而函数需要改变该变量时

     1 #include <stdio.h>
     2 void swap(int *a,int *b)
     3 {
     4     int c;
     5     c = *a;
     6     *a = *b;
     7     *b = c;
     8 }
     9 int main ()
    10 {
    11     int a = 2;
    12     int b = 3;
    13     printf("initial
     a = %d, b = %d
    ",a,b);
    14     swap(&a,&b);
    15     printf("after swap
     a = %d , b = %d
    ",a,b);
    16     return 0;
    17 }
    View Code

    二级指针

    当需要改变的是指针的值时,(一定要分清是指针的指向,还是指针指向的东西)

    例:在数据结构的链表的初始化中,传入二级指针的原因是并不是改变主函数中指针指向者的内容,创建新节点的本质其实是改变指针指向,即改变指针自己本身。因此如果传入的是一级指针,只能改变指针指向的内容。

  • 相关阅读:
    HMM MEMM CRF 差别 联系
    JSTL简单介绍
    java基础&amp;&amp;高薪面试
    oracle-Normal
    oracle-Oradim
    oralce管理命令
    oracle默认日期格式
    oralce默认语言
    oracle国家字符集
    oracle-字符集
  • 原文地址:https://www.cnblogs.com/Ponytai1/p/5874778.html
Copyright © 2020-2023  润新知