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
Atitit.java c++指针使用总结O7相关推荐
- Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27
Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需 ...
- Atitit JAVA p2p设计与总结 JXTA 2
Atitit JAVA p2p设计与总结 JXTA 2 JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的.基于 Java 的参考实现作为构建基础.在设计方面进行了重要的修改,以 ...
- Atitit.Java exe bat 作为windows系统服务程序运行
Atitit.Java exe bat 作为windows系统服务程序运行 1. 使用SC命令+srvany.exe (不错,推荐)+net start1 1.1. First 创建一个java的运 ...
- atitit. java jsoup html table的读取解析 总结
atitit. java jsoup html table的读取解析 总结 1. 两个大的parser ,,,jsoup 跟个 htmlparser 1 2. 资料比较 1 3. jsoup越佳. ...
- Atitit Java OpenCV 捕获视频
Atitit Java OpenCV 捕获视频 ,打开一段视频或默认的摄像头 有两种方法,一种是在定义类的时候,一种是用open()方法. 一. 读取视频序列 OpenCV提供了一个简便易用的框架以 ...
- Atitit.java c#这类编程语言的设计失败点attilax总结
Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码1 1.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.1 1.3. 二维码的样例:2 1.4. 定位图案2 1. ...
- Atitit.java相比c#.net的优点 优缺点 v2 q330
Atitit.java相比c#.net的优点 优缺点 v2 q330 1. 跨平台可在LINUX上,mac跑以外.主要如下: 1 2. IDE ECLIPSE(500m)是绿色的,换机器不用安装,C ...
- Atitit.java swing打印功能 api attilax总结
Atitit.java swing打印功能 api attilax总结 1. 打印方式有三种:2 1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印.2 ...
- java文件指针,Java 测试文件指针,java测试指针,两种方法打开文件并进行内
Java 测试文件指针,java测试指针,两种方法打开文件并进行内 两种方法打开文件并进行内容定位package com.ronsoft.books.nio.channels;import java. ...
最新文章
- 谷歌开源框架 FUSS,让声音分离不再成为难题
- 曲阜有学计算机的学校吗,曲阜职业中专计算机专业课程上几年
- 怎么查询网站的收录量
- 2008.09.20三多寨
- 创建自己的内容提供器
- python展示数据库视图_在Django的视图中使用数据库查询的方法
- 纹理和基元_通过粘性仙人掌基元进行延迟加载和缓存
- [linux]Ubuntu12.1下打开terminal的方式
- HTML+CSS+JS实现 ❤️从亮到暗图片滤镜特效❤️
- Python3调试类_io.BytesIO、_io.StringIO用法(Python3 IO编程之StringIO和BytesIO)
- 你的消息队列如何保证消息不丢失,且只被消费一次,这篇就教会你
- 算力用多少买多少,竞享实例太香了
- js 比较时分大小_JS 判断两个时间的大小(可自由选择精确度:天,小时,分钟,秒)...
- C#如何关闭指定进程
- 编写更加稳定、可读性强的JavaScript代码
- expect自动登录以及远程脚本执行
- Win7 系统解压安装
- UE4 Datasmith 材质
- java 判断是否为英文字母_java判断是否是26个英文字母代码示例
- python中等高线填充颜色_Matplotlib:使用透明颜色填充等高线图
热门文章
- php fpm mysql 长链接_PHP Mysql数据库 长链接 短链接 (连接池 ?)
- Edit Control最简单使用
- ORACLE SQL*PLUS
- CDN的基本原理和基础架构
- 【转】Volatile 实现原理
- Android 开源框架Universal-Image-Loader全然解析(二)--- 图片缓存策略具体解释
- 小公司如何部署实施Linux集群网站【转载】
- Maven-Eclipse使用maven创建HelloWorld Java项目,maven常用的命令解析
- f-stack中ipc传递指针从应用中读取信息时挂掉
- 导出excel用ajax不行,提交form表单可以