终于把DELPHI的指针搞清楚了
2010-01-02 13:19
351 查看
最近两周一直在学习DELPHI,由于之前对VB研究了一段时间,基本上DELPHI的东西都可以搞清楚,不过当遇到指针类型的时候却困惑了,特别是指针和记录一起使用的时候,更是云里雾里,虽然我经常提醒自己“指针不过是一串地址而已”!经过两天的苦苦思索,终于搞清楚了,所以写出来纪念一下子。
PASCAL语言中提到了几个高级数据类型:数组、枚举、集合、记录、指针。指针恐怕是在做数据时用的最频繁的一种类型了,所以掌握指针类型是必须的。指针类型在使用时须要先定义,然后再声明变量,最后再使用,如下为一简单的指针类型的使用:
type //1定义
take=^takeinfo;
takeinfo=record
age:integer;
end;
var //2声明
t1,t2:take;
begin //3使用
new(t1);
t1.age:=10;
t2:=t1;
application.MessageBox(pchar(inttostr(t2.age)),'test',mb_ok);
DISPOSE(T1);
end.
从上面可以看到这是一个和记录混用的(动态)指针,由于是高级数据类型所以比PASCAL内置的类型多了一个步骤:定义,只有在定义之后PASCAL才会知道是什么类型的数据。其它的就一样了,声明后使用。动态指针的调用是通过DELPHI内置的NEW过程来完成的,这个相当于是告诉PASCAL“我要开始工作了,给我分配一点空间”,至于这个空间有多大则是由该指针指向的变量所赋值的大小决定的,指针在这个过程中仅仅执行了记录变量地址的工作,分配空间的事不规它管。按照程序工作的逻辑,在申请内存空间后必须要释放,否则在程序运行的过程中内存空间会一直被占用,为了减少内存的负担,就必须使用DISPOSE过程来释放空间。
这里也是让我混淆的地方:因为和记录类型混用,记录是用来管理不同类型的数据,它和集合很相似,区别仅仅是一个是同类型,一个是不同类型;动态指针在这里的作用还是一样,只记录地址,如果给记录中的某个变量赋值,那么这个值是归域中的变量所有,和指针是没有关系的。至于上面的为何T2:=T1后T2的AGE域为何和T1相同,是因为T1和T2指向了同一个地方而已
本文出自 “中国CHS实验室” 博客,谢绝转载!
PASCAL语言中提到了几个高级数据类型:数组、枚举、集合、记录、指针。指针恐怕是在做数据时用的最频繁的一种类型了,所以掌握指针类型是必须的。指针类型在使用时须要先定义,然后再声明变量,最后再使用,如下为一简单的指针类型的使用:
type //1定义
take=^takeinfo;
takeinfo=record
age:integer;
end;
var //2声明
t1,t2:take;
begin //3使用
new(t1);
t1.age:=10;
t2:=t1;
application.MessageBox(pchar(inttostr(t2.age)),'test',mb_ok);
DISPOSE(T1);
end.
从上面可以看到这是一个和记录混用的(动态)指针,由于是高级数据类型所以比PASCAL内置的类型多了一个步骤:定义,只有在定义之后PASCAL才会知道是什么类型的数据。其它的就一样了,声明后使用。动态指针的调用是通过DELPHI内置的NEW过程来完成的,这个相当于是告诉PASCAL“我要开始工作了,给我分配一点空间”,至于这个空间有多大则是由该指针指向的变量所赋值的大小决定的,指针在这个过程中仅仅执行了记录变量地址的工作,分配空间的事不规它管。按照程序工作的逻辑,在申请内存空间后必须要释放,否则在程序运行的过程中内存空间会一直被占用,为了减少内存的负担,就必须使用DISPOSE过程来释放空间。
这里也是让我混淆的地方:因为和记录类型混用,记录是用来管理不同类型的数据,它和集合很相似,区别仅仅是一个是同类型,一个是不同类型;动态指针在这里的作用还是一样,只记录地址,如果给记录中的某个变量赋值,那么这个值是归域中的变量所有,和指针是没有关系的。至于上面的为何T2:=T1后T2的AGE域为何和T1相同,是因为T1和T2指向了同一个地方而已
本文出自 “中国CHS实验室” 博客,谢绝转载!
相关文章推荐
- 终于懂了:Delphi的函数名不是地址,取地址必须遵守Object Pascal的语法(Delphi和C的类比:指针、字符串、函数指针、内存分配等)good
- delphi中使用指针优化程序性能
- Delphi 的内存操作函数(1): 给字符指针分配内存
- Delphi 的类型与指针
- (转)智能指针的另外一种实现 - Smart pointers in Delphi
- 终于解决了TTreeView中Node更换图片的问题(Delphi)
- Delphi 的内存操作函数(1): 给字符指针分配内存
- Delphi 给结构体指针分配内存,用new(p),释放用dispose(p)
- delphi 指针 入门
- Delphi 指针大全
- 终于见到了传说中的DELPHI 2006
- Delphi下使用指针的简单总结
- Delphi泛型应用示例之一:接口化指针
- Delphi下使用指针的简单总结
- delphi指针简单入门
- Delphi class of (类引用, 指向类信息的指针)
- 我终于搞清楚为什么谷歌地图获取到的联通3G基站与大家手头的基站表不同了
- UniCode问题的探讨,终于解决了编码的问题。--Delphi
- 我和DELPHI不得不说的故事之-------终于在半独立的状态下完成了第一个程序