zoukankan      html  css  js  c++  java
  • C语言一级指针与二级指针

    指针的概念

             指针就是地址, 利用这个地址可以找到指定的数据

             指针就是地址, 那么在使用的时候, 常常会简单的说 指针变量为指针

             指针变量就是存储地址的变量

            int *p1;// 申请了一个变量, 即在内存中开辟了一块内存, 存储数据

                        // 开辟了 8 个字节, 在 Mac 下 指针都占 8 个字节

             使用指针, 实际上应该说成使用指针变量

             1> 算术运算

                  +1 移动几个字节?

                  看类型: int *,  long *,  char *

             2> 获得地址表示的数据

                  指针里面存储的是地址, 就可以将该地址中的数据取出来

                  寻址运算符 *&p1  -> p1

             3> 修改改地址中的数据

             4> 作为函数参数的使用(*****)

                  如果传递的不是指针变量, 而是普通的变量, 就是值传递: 函数内与函数外是两个不同的变量, 只是存储的数据相同(好比发送文件)

                  如果传递的是指针变量, 即传递的是地址, 那么就是引用传递: 函数内外可以看成同一个变量(好比发送链接)

                  由于函数参数使用指针后, 可以实现函数内变量修改后, 影响到函数外的变量. 因此常常将函数参数设置为指针类型的变量

                  实现利用参数返回多个数据的函数

                  scanf("%d", &num);

             二级指针

             二级指针就是指向一级指针的指针(n 级指针就是 指向 n-1 级指针的 指针)

             指针的本质就是地址, 那么几级指针也只是一个地址, 唯一不同的就是寻址的结果(*p)

             1>在开发中使用 二级指针的地方就是利用函数或方法返回一个 一级指针数据

            2> 如果需要用函数参数返回数据, 如果返回的是一般的数据, 传递一级指针

            3> 如果返回的是一个一级指针, 那么参数应该是一个二级指针

            4> 如果返回的是一个 n 级指针, 那么参数应该是一个 n+1 级指针

      下图中*p1指的是num的值,*p2指的是p1内存的地址,**p2也指的是num的值......

     

    MDM相关内容
  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/liyy2015/p/5093926.html
Copyright © 2011-2022 走看看