zoukankan      html  css  js  c++  java
  • C 语言中指针的指针究竟是个啥

    C 语言中指针的指针究竟是个啥

    一、前言

    今天我们 QQ 群里同学写了句 a[0] = *(a+0) 这样的代码。和大家做一个分享,然后我们看看怎么回事。

    二、代码

    看过之前 一文让你明白 C 语言中的指针的同学,不难写出这样的代码。

    在这里,我们其实是定义了个指针(指向内存空间的地址)。在 一文让你明白 C 语言中的指针 里我们写到:当指针和数组彼此独立,只能依靠地址递增实现读取。

    2-1 引入单指针

    那么是否可以将这段代码改为这样:

    这边希望大家注意的是,我们将指针地址加1后取值。

    然而地址并不是只是加了1,实际上是根据 int 大小,加了4个bits.

    2-2 指针的指针

    如此一来,也就是说 a[0] = *(a+0) 是没问题的。

    我们如果在外面再套一层,写成这样子呢:a[i][j]=*(*(a+i)+j)这样似乎就变成了指针的指针。在这个过程里发生了什么?

    指针指向了另外一个指针。指针的指针的地址是一大块区域的首地址,再根据字符类型对内存地址做增加。最终找到了正确的值。

    (完)
  • 相关阅读:
    Tarjan 的一些板子
    对 SAM 和 PAM 的一点理解
    一些敲可爱的数论板子
    异常
    面向对象编程
    JAVA数组
    JAVA方法
    JAVA流程控制
    JAVA基础
    JAVA入门
  • 原文地址:https://www.cnblogs.com/itxdm/p/c_pointer_of_pointer.html
Copyright © 2011-2022 走看看