zoukankan      html  css  js  c++  java
  • C语言指针的高级操作

    C语言指针的高级操作

    指针

    在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作。

    指向指针的指针

    这名字乍一听有点拗口,再次一听就更加拗口了。先看定义:

    type **ptr;
    

    指向指针的指针仅仅只比比指针只多了一个*号,没什么很大的改变,接下在我们看一下使用:

    #include <stdio.h>
    void main()
    {
        int var = 10;
        int *ptr;
        int **pptr;
        
        ptr = &var;
    
        pptr = &ptr;
    
        printf("ptr的值是%p
    ",ptr);
        printf("*ptr的值是%d
    ",*ptr);
    
        printf("pptr的值是%p
    ",pptr);
        printf("*pptr的值是%p
    ",*pptr);
        printf("**pptr的值是%d
    ",**pptr);
    
    }
    

    这时候我们想一想&*的作用就能理解了

    • &:取地址
    • *:从地址中取值

    我们都知道,C语言指针是一个变量,只不过变量所储存的值只能是地址罢了。那么它肯定在内存空间肯定要占一个位置,因为不可能是凭空产生的嘛,那么指针便有一个内存地址

    所以,在上面的代码中,pptr即代表着指针变量ptr内存地址。而*pptr代表的便是指针ptrvar内存地址,所以**pptr便代表的是var的值。

    代码运行结果如下:

    ptr的值是0x7ffe3aee9994
    *ptr的值是10
    
    pptr的值是0x7ffe3aee9998
    *pptr的指向的值是0x7ffe3aee9994
    **pptr的指向的值是10
    
  • 相关阅读:
    11.26
    11.25
    11.24
    11.23
    11.22
    11.21
    11.20
    3.16结对作业1.2
    3.14结对作业1.0
    3.13Android学习
  • 原文地址:https://www.cnblogs.com/xiaohuiduan/p/9867663.html
Copyright © 2011-2022 走看看