zoukankan      html  css  js  c++  java
  • C++学习笔记---指针

    1、基本概念

    作用:可以通过指针直接访问内存

    • 内存编号是从0开始记录的,一般用16进制数字表示
    • 可以利用指针变量保存地址

    2、定义和使用

    定义指针

    他们的关系就是这样的

     运行输出

     使用指针

     运行输出会发现变量a的值也一起改变了,这是因为在内存中*p和a都是一个内存地址

     3、指针所占内存空间

    在32位操作系统下占用4个字节,64位下占8个字节

    4、空指针和野指针

    • 空指针:指针变量指向内存中编号为0的空间,用于初始化指针
    • 注意:空指针指向的内存是不可以访问的,因为0~255之间的内存编号是系统占用的

     运行后报错,所以我们是没权限访问系统内存的

    •  野指针:指变量指向的是非法的内存空间

    虽然没报错,但是想一下随便指向一个地址,没有去申请这个地址的权限,有权利操作这个地址吗?

    举个栗子:去酒店开房,网上随便订了一间还没有去前台登记,就想进房间,这是不允许的

    使用一下运行

     注意:在程序中,尽量避免野指针

     5、const修饰指针

    • const修饰指针---常量指针
    • const修饰常量---指针常量
    • const即修饰指针,又修饰常量

      5.1、常量指针:const 数据类型 * 指针名

        指针的指向可以修改,但指针指向的值不可以修改

       

     

      5.2、指针常量:数据类型 * const 指针名

        指针的指向不可以改,但指针指向的值可以修改

       5.3、const即修饰指针,又修饰常量:const 数据类型 * const 指针名

        指针指向的值和地址都不可以修改

     6、指针和数组

    • 利用指针访问数组元素

     运行后

     7、指针和函数

    • 利用指针作为函数的参数,可以修改实参的值

    值传递

     运行后

     如果想要main中的a和b也一起交换就要使用地址传递

     运行后

    因为在swap2方法中都是修改同一个内存地址的值,所以main中的a和b也交换了

  • 相关阅读:
    CF 990A. Commentary Boxes【数学/模拟】
    HDU 变形课 1181【DFS/BFS】
    HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】
    牛客网 小白赛4 A三角形【贪心】
    POJ 2251 Dungeon Master【三维BFS模板】
    Poj 1236 Network of Schools (Tarjan)
    Poj 2186 Popular Cows (Tarjan)
    Hdu 5285 wyh2000 and pupil (bfs染色判断奇环) (二分图匹配)
    搜索专题题解
    Light 1289
  • 原文地址:https://www.cnblogs.com/edllixiaoyu/p/13581286.html
Copyright © 2011-2022 走看看