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

Atitit.java c++指针使用总结O7的更多相关文章

  1. Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针

    Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针   1.1. java方法引用(Method References) 与c#委托与脚本语言js ...

  2. Atitit java onvif 开源类库 getProfiles getStreamUri

    Atitit java onvif 开源类库 getProfiles getStreamUri 1. ONVIF Java Library by Milgo1 1.1. https://github. ...

  3. Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结

    Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结 1.1. 边缘检测的基本方法Canny最常用了1 1.2. 编写matlab边缘检测代码, ...

  4. Atitit.java c#.net php项目中的view复用(jsp,aspx,php的复用)

    Atitit.java c#.net php项目中的view复用(jsp,aspx,php的复用) 1.1. Keyword1 1.2. 前言1 2. Java项目使用.Net的aspx页面view1 ...

  5. Atitit java集成内嵌浏览器与外嵌浏览器attilax总结

    Atitit java集成内嵌浏览器与外嵌浏览器attilax总结 HTML5将颠覆原生App世界.这听起来有点危言耸听,但若认真分析HTML5的发展史,你会发现,这个世界的发展趋势确实就是这样. 熟 ...

  6. Atitit.java c#这类编程语言的设计失败点attilax总结

    Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...

  7. Atitit java 二维码识别 图片识别

    Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...

  8. Atitit java的异常exception 结构Throwable类

    Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...

  9. Atitit.java图片图像处理attilax总结

    Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...

随机推荐

  1. 打造Linux三流娱乐环境,二流办公环境,一流Java开发环境

    写这篇文章的目的首先是为让自己以后再装linux环境时候,不用再通宵google+百度,做个备忘录,其次,给新入Linux环境的同学分享一点个人经验,再高尚点的动机也算是想做为开源技术的传播布道者.我 ...

  2. NOIP模拟赛 最大匹配

    问题描述 mhy12345学习了二分图匹配,二分图是一种特殊的图,其中的点可以分到两个集合中,使得相同的集合中的点两两没有连边.     图的“匹配”是指这个图的一个边集,里面的边两两不存在公共端点. ...

  3. Linux关闭休眠和屏保模式

    本人因为特殊需求,想让某台Linux主机始终显示某个程序,显示器不能关机或者休眠或进入屏保模式. 环境:Ubuntu 11.10 最小化模式安装并安装有轻量级桌面openbox(非gnome).因为X ...

  4. js实现拖拽

    拖拽:最核心是三个事件,鼠标按下,鼠标移动,鼠标弹起.按下时激活拖拽,然后时刻根据鼠标的位置来更新物体的left和top值,达到跟随鼠标的效果,鼠标弹起则取消拖拽. 以下是代码: <!DOCTY ...

  5. Android热修复

    https://github.com/WeMobileDev/article/blob/master/%E5%BE%AE%E4%BF%A1Android%E7%83%AD%E8%A1%A5%E4%B8 ...

  6. linux.打包与压缩

    //打包tar -zcvf etc.tar.gz /etc//解包tar -zxvf hdmzy.tar.gz

  7. 教你怎么安装MongoDB

    以下命令以root用户运行:#sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10#echo 'deb http://do ...

  8. HDU 2066 一个人的旅行 - from lanshui_Yang

    Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...

  9. UVa 10129 Play On Words【欧拉道路 并查集 】

    题意:给出n个单词,问这n个单词能否首尾接龙,即能否构成欧拉道路 按照紫书上的思路:用并查集来做,取每一个单词的第一个字母,和最后一个字母进行并查集的操作 但这道题目是欧拉道路(下面摘自http:// ...

  10. Java 继承详解

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...