zoukankan      html  css  js  c++  java
  • Atitit.java c++指针使用总结O7

    Atitit.java c++指针使用总结O7

     

    1. 指针的本质 1

    2. 指针的作用 1

    1. 提升性能问题这经常常使用于遍历数组, 1

    2. 计算两个指针的的距离 2

    3. 避免栈溢出,创建动态数据结构,,大的对象/数组必须使用指针或者静态的变量 2

    4. 灵活性 2

    3. 一个变量包含a.地址(指针)  b。命名(引用,别名)   c.变量内容.. 3

    4. 指针跟引用的差别 3

    5. ////////////c++中的指针.. 3

    6. ////////////java中的指针 4

    5. this指针 4

    6. 获得变量的指针 4

    7. 通过指针解引用变量/对象 4

    7. 參考 5

     

    1. 指针的本质

    指针并非由于C语言才有的。

    寻址、执行这么一个过程就是计算机的基本原理。虽然非常多高级语言都没有指针。但程序的执行就是靠着不停的寻址来执行的。可执 行的机器码、全局变量、局部变量和程序返回地址等这三块二进制数都存放在内存中。而仅仅有cpu具有计算功能,他的计算实际上非常弱。每次仅仅能算一个非常简 单的算术运算或逻辑运算(但运算速度惊人)。要把程序代码和变量从内存传到cpu就须要通过找寻数据在内存中的地址,然后通过数据总线和地址总线传进 cpu运算(那两个总线就是实实在在的电线。)。

    所以假设你了解了程序的机构就能够依据地址去做非常多非常灵活甚至是非常诡异的操作。不仅如此。你想做的全部操 作也都离不开地址。

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    2. 指针的作用

    1. 提升性能问题这经常常使用于遍历数组,

     

    指针仅仅是一个普通的变量。其值指向一个地址..更精确地说,是其指向值得一个地址号码。

    这个地址号码能够被复制。 你能够对其进行加或减法操作。

     

    2. 计算两个指针的的距离

    这在使用数组时非常实用。这里对数组的便利事实上就是迭代器,所以。在实际代码 时,指针能够取代迭代器使用。

    可是,从多年C++开发经验来看。差点儿没实用到针对指针的计算操作。

    指针真正的用途是被用于完毕下列3种任务:

    3. 避免栈溢出,创建动态数据结构,,大的对象/数组必须使用指针或者静态的变量

    指针正好能够用来解决这个难题。使用指针您能够创建动态数据结构。这时内存将在程序执行的时候从堆上分配,而不用一開始就声明数组的最大规模。这样您就能够为每一个文档准确地分配内存而不会产生浪费。

    并且。关闭一个文档时您还能够把它占用的内存返回给堆,以供程序的其它部分使用。

    使用指针,内存就能够在程序执行期间不断被回收利用。

     

    能够直接把数组定义改成指针,然后动态申请内存;也能够把局部变量变成全局变量,一个偷懒的办法是直接在定义前边加个static,

    函数里定义了一个局部变量,是一个类对象,该类中有一个大数组,大概是1.5M。

     

    Windows程序的内存机制大概是这种,全局变量(局部的静态变量本质也属于此范围)存储于堆内存,该段内存较大,一般不会溢出;函数地址、函数參数、局部变量等信息存储于栈内存,VC6中栈内存默认大小为1M,对于当前日益扩大的程序规模而言,稍有不慎就可能出问题

     

    4. 灵活性

    所以假设你了解了程序的机构就能够依据地址去做非常多非常灵活甚至是非常诡异的操作。不仅如此,你想做的全部操 作也都离不开地址。

     

    3. 一个变量包含a.地址(指针)  b。命名(引用,别名)   c.变量内容..

     

    4. 指针跟引用的差别



    指针是一个变量的地址。引用是一个变量的别名。
    1. 指针是一个地址编号,而引用仅是个别名。
    2. 引用使用时无需解引用(*),指针须要解引用;
    3.引用是操作受限了的指针(仅容许取内容操作)。
    4.指针用操作符‘*’和‘->’,引用使用操作符‘.’
    5.指针是用来指向某个变量,而引用是给变量取个别名,其作用就如同typedef一样。
    6.所以引用訪问对象是直接訪问。指针訪问对象是间接訪问。
    7.两者在作为形參的时候非常类似。差别是指针拷贝副本,引用不拷贝。
    8.一般使用引用来指向一个基本类型,, 使用指针来指向对象(包含数组).. 也能够使用引用指向对象,可能他是存储在stack中的,尺寸限度(1-2M),所以,大的对象会stack full 或者不能access 内存(内存越过限度)..

    这个checked in O79

     

    5. ////////////c++中的指针..


    在C++里优先选择引用类型作为形參。由于操作一个变量比操作一个指针要简单的多
    但用指针作为形參的优点是它能够通过自增或自减改变它的指向


    用引用作形參时在调用函数里就像操作实參一样。不须要考虑实參的地址问题
    用指针做形參时。由于指针的值是变量的地址,所以要通过对地址解引用来操作其所指的变量



    例:int a=10;//a存放在存储空间的地址为:0x000009
           int &b=a;//b就是a的引用,此时b 的值也为10
           int *ptra=&a;//ptra就是a的指针,其值为0x000009
           
           
           

    6. ////////////java中的指针

    5. this指针

     

    6. 获得变量的指针

    //定义变量包装类.
              IntByReference intRef=new IntByReference(9);
              //获得变量的值(( 9 ))
              System.out.println(intRef.getValue());
              //获得变量的指针包装对象..
              Pointer pointer = intRef.getPointer();
            System.out.println(pointer );
            //allocated@0x571b48 (4 bytes)
            //---------------------------------
            int addr = pointer.hashCode();
            System.out.println("Add:"+addr);          
              //打印出指针(地址)..
            //  Add:3283784  (0x571b48)

    7. 通过指针解引用变量/对象

     int addr=0x571b48;

    Object o=p(addr);

    >>>>>> GloableMap.get(addr)

    7.  參考

    paip.指针 引用 c++ java的使用总结. - attilax的专栏 - 博客频道 - CSDN.NET.htm
    paip.c++ 指针跟引用的差别.
    C++中的- 和.的问题?_百度知道.htm
    指针和引用有什么差别 请写一个简单的程序说明_百度知道.htm
    指针和引用的差别_百度知道.htm 

  • 相关阅读:
    leetcode-easy-string-28 Implement strStr()
    leetcode-easy-string-242. Valid Anagram
    leetcode-easy-string-387 First Unique Character in a String
    指派问题(匈牙利算法)
    Neural Network Basics
    Softmax && Cross-entropy Error
    Our Future
    SVD
    Lecture2
    RF 和 GBDT联系和区别
  • 原文地址:https://www.cnblogs.com/llguanli/p/8685596.html
Copyright © 2011-2022 走看看