`

delphi指针简单入门

阅读更多

摘自:http://topic.csdn.net/t/20030614/03/1914197.html

 

delphi指针简单入门:

看一个指针用法的例子:
1         var
2             X,   Y:   Integer;       //   X   and   Y   整数类型
3             P:   ^Integer;           //   P   指向整数类型的指针
4         begin
5             X   :=17; //   给   X   赋值
6             P   :=   @X;                   //   把   x的地址赋给p
7             Y   :=   P^;                   //   取出p所指向的数值赋给y
8         end;

第二行定义了两个变量X,y.   第三行声明了p是指向整数类型的指针;意味着p能够指向x或者y的地址.第五行赋给x值,第六行把x的地址赋给p.最

后通过p指向的变量赋值给y.此时,x和y有相同的值.

操作符@用来取出变量的地址,也可以取出过程和函数的地址.

而符号^有两个目标,
当它出现在类型定义的前面时如 ^typename 表示指向这种类型的指针;
当它出现在指针变量后边时   如 point^ 返回指针指向的变量的值;

理解指针比较容易理解面向对象的pascal语言,因为指针经常在幕后操作.任何要求动态分配大的内存空间的类型可以用指针类型.例如

,long-string变量,实际在使用指针进行操作.另外一些高级的编程技术需要使用指针类型.
有时指针是适应object   pascal严格的类型限制的唯一方法.同过一个通用的指针类型,通过类型转换成不同的指针类型,如下面的例子:
type

    PInteger   =   ^Integer;
var
    R:   Single;
    I:   Integer;
    P:   Pointer; //通用的指针
    PI:   PInteger;
begin
    P   :=   @R; //取出R的内存地址
    PI   :=   PInteger(P); //把通用类型转换成指向整数类型的指针
    I   :=   PI^;
end;

当然了,实数和整数的存储格式不同.这种赋值是把原始的二进制数据从R拷贝到I,而不进行转换.

保留字nil是一个特殊的常量可以赋给任何指针类型,当nil赋給一个指针时,指针什么也不指向,是一个空指针.

@操作符返回变量的内存中的存储地址,或者是过程\函数\方法;

1.如果变量,@X返回的是x的地址。如果编译选项{$T-}没有打开,着返回的事一个通用的指针,如果编译选项打开了,着返回的是x的类型对应的指

针.

2.如果是例程(过程\函数),@F返回的是F的入口点,@F的类型是一个指针。

3.当@用在类的方法中时,则方法的名称必须有类名,例如@TMyclass.Dosomething
指针指向TMyclass的dosomething方法。


当一个过程变量在赋值语句的左边时,编译器期望一个过程值在赋值语句的右边。这种赋值使得左边的变量可以指向右边定义的过程或者函数

入口点。换句话说,可以通过该变量来引用声明的过程或者函数,可以直接使用参数的引用。

var

    F:   function(X:   Integer):   Integer;
    I:   Integer;
function   SomeFunction(X:   Integer):   Integer;
  ...
F   :=   SomeFunction;     //   给f赋值
I   :=   F(4);                     //   调用所指向的函数

在赋值语句中,左边变量的类型决定了右边的过程或者方法指针解释。

var

    F,   G:   function:   Integer;
    I:   Integer;
function   SomeFunction:   Integer;
  ...
F   :=   SomeFunction;     //   给f赋值
G   :=   F;                           //   把F的值拷贝给G
I   :=   G;                           //   调用函数

第一句获得函数的入口,第二句将指针复制,第三句获得函数的返回值。

有时候还可以这样使用
if   F   =   MyFunction   then   ...;
在这里,F的出现导致一个函数调用;编译器调用F指向的函数,然后调用Myfunction,比较结果。这个规则是无论何时一个过程变量(

procedural   variable)出现在一个表达式中,它表示调用所指向的函数或者过程。有时F指向一个过程(没有返回值),或者f指向一个需要参

数的函数,则前面的语句会产生一个编译错误。要比较F和Myfunction需要用
if   @F   =   @MyFunction   then   ...;
@F把F转换成一个包含地址的无类型的指针变量,@myfunction返回myfunction的地址。
获得一个过程变量的内存地址使用@@。例如,@@F返回F的地址。

@操作符通常把一个无类型的指针值赋给一个过程变量,例如:
var   StrComp:   function(Str1,   Str2:   PChar):   Integer;
  ...
@StrComp   :=   GetProcAddress(KernelHandle,   'lstrcmpi ');
调用GetProcAddres函数,用strcomp指向这个值
任何过程变量可以赋成nil,表示指证什么也不指向。但是试图调用一个nil值的过程变量导致一个错误,为了测试一个过程变量是否可以赋值

,用标准的赋值函数Assigned
if   Assigned(OnClick)   then   OnClick(X);


先到这里吧,我也是一边看帮助一边翻译的,没有参考什么书籍,所以有一些名词可能不太准确,希望大家多多包涵吧,毕竟本人的英文水平有限啊

.呵呵

有什么问题可以参看delphi的帮助的相关内容,个人觉得还是看帮助好一些,而且原文最好,像我这样翻译可能误导大家啊,看的时候要受其精华

弃其糟粕,看完了别骂我就行了,全当我给大家仍块砖头吧,别砸我啊@_@

分享到:
评论

相关推荐

    delphi 指针入门实例

    在这个"Delphi指针入门实例"中,我们将深入探讨指针的基本用法和相关知识点。 一、指针的定义 在Delphi中,指针是一个变量,它存储的是另一个变量的内存地址。使用`^`符号来声明指针类型,如`var ptr: ^Integer;`,...

    delphi指针入门

    本篇文章将深入浅出地介绍Delphi中的指针概念,帮助初学者快速入门。 首先,理解指针的基本概念至关重要。指针是一个变量,它存储的是另一个变量的内存地址。在Delphi中,指针类型通常以'^'符号开头,后面跟着所...

    Delphi对象模型和接口指针分析

    这个程序所包含的是,籍由故意设计而成的TInterfacedObject和TMyInterfacedObject2个类,得到4个实例对象,4个接口指针,并且演示了在编译器实现过程中,对象模型的空间状态,接口指针,接口方法表格种种复杂的关系...

    Delphi快速入门经典

    7. **内存管理和性能优化**:了解Delphi的内存管理机制,如使用析构函数和智能指针,可以编写出更高效、更稳定的代码。 8. **网络编程**:Delphi提供了丰富的网络组件,如TIdHTTP、TIdTCPClient等,可实现HTTP请求...

    Delphi语法基础 入门推荐

    **Delphi语法基础 入门推荐** Delphi是一款强大的面向对象的编程环境,以其高效的编译器和直观的集成开发环境(IDE)而受到程序员的欢迎。它基于Pascal语言,但增加了许多现代编程特性,使得Delphi成为开发桌面应用...

    轻松入门学习delphi课件

    ### Delphi入门学习课件知识点概览 #### 第2章:ObjectPascal语言基础 ##### 2.1 语言成分 - **程序组成**:理解程序的基本结构,包括词汇集、基本字符、保留字、指示字、标识符、分隔符、注释和编译指令。了解...

    Delphi 7 从入门到精通随书源码

    4. **数据库访问**:Delphi的DBExpress和ADO(ActiveX Data Objects)框架提供了与各种数据库系统的连接能力,使得数据库应用的开发变得简单。 5. **单元(Unit)系统**:Delphi中的代码组织方式是通过单元,每个...

    指针入门教程

    指针是计算机编程中一种非常重要的概念,尤其在C++和Delphi这样的系统级编程语言中,它扮演着核心角色。本教程旨在帮助初学者理解并掌握指针的基础知识,从而能够更有效地进行程序设计。 首先,我们来理解什么是...

    Delphi 5 经典教程

    1.5 创建一个简单的应用程序 11 1.6 事件机制的优势在哪里 12 1.7 加速原型化 13 1.8 可扩展的组件和环境 13 1.9 IDE最重要的十点功能 13 1.10 总结 15 第2章 Object Pascal语言 16 2.1 注解 16 2.2 新的过程和函数...

    外挂制作入门 (Delphi语言版)

    在本教程中,我们将逐步讲解如何从零开始编写一个简单的Delphi外挂,包括设置项目、导入API、编写内存读写代码、处理事件、以及反调试技巧。希望这个入门教程能为你开启外挂制作的学习之旅,让你在外挂技术的道路上...

    Delphi编程入门讲解.ppt

    Delphi编程入门详解 Delphi,作为一款历史悠久的集成开发环境(IDE),以其高效快速的开发能力和面向对象的编程语言Object Pascal闻名。自1995年发布以来,Delphi经历了多个版本的迭代,从Delphi 1到Delphi 2010,...

    delphi入门经典

    《Delphi入门经典》是一本深受初学者喜爱的Delphi编程教程,其以CHM(Compiled Help Manual)格式提供,方便读者在学习过程中快速查阅和理解。Delphi是一款强大的对象 Pascal 编程语言,以其高效的代码生成和直观的...

    Delphi 课件~适合入门者哦~

    9. **内存管理和垃圾回收**:虽然Pascal不支持自动垃圾回收,但Delphi提供了一些智能指针(如`TInterfacedObject`和`IDispatch`)来简化内存管理,避免内存泄漏。 10. **社区和资源**:Delphi拥有活跃的开发者社区...

    delphi2010 教程及语法手册

    以下内容将对Delphi 2010的入门知识、基础语法、数据类型及运算符、程序流程控制、函数与过程、类与对象、接口、异常处理、运算符重载和泛型等关键知识点进行详细说明。 ### Delphi 2010 入门 Delphi 2010的入门...

    Delphi2010语法手册.pdf

    在数据类型及运算符章节中,会详细讲解Delphi语言中的数据类型,包括简单类型(整型、实型、字符类型、布尔类型、枚举类型、子界类型)、结构类型(集合、数组、记录类型)、字符串类型、指针、变体类型以及运算符的...

    delphi 语法手册

    Delphi是Borland公司推出的一款流行的快速应用开发工具,使用...Delphi2010语法手册为初学者提供了入门级别的指导,其内容涵盖了Delphi编程语言的各个方面,对于刚接触Delphi编程的开发者来说,是一本极佳的学习资源。

    delphi 5 编程基础

    2. **数据类型**:在Delphi中,数据类型包括基本类型(如整型、浮点型、字符型)、枚举类型、数组、记录、指针和类等。了解并熟练使用这些类型是编程的基础。 3. **变量与常量**:变量是存储数据的地方,而常量则是...

    DELPHI 资料

    delphi 快捷键的使用 delphi函数大全-繁体 delphi函数大全-简体 函数,属性大全 枚舉類型詳細說明 指令字,保留字,特殊符号 指针入门 指针的创建和释放 數據類型 数据类型转换-繁体 数据类型转换-简体 编译错误信息

    关于delphi 心得

    Delphi的Pascal语法与标准Pascal略有不同,例如增加了类型安全的指针和异常处理机制。 接下来,我们要了解的是VCL(Visual Component Library),这是Delphi提供的组件库,包含了大量的预先构建的用户界面控件和非...

    Delphi XE4 语言指南.pdf

    《Delphi XE4 语言指南》是一份针对Delphi XE4编程语言的详细学习资源,由叶叶(网名:yeye55)编写。该指南是Delphi开发者不可或缺的学习材料...这份指南强调清晰明了的表达,对于初学者来说是入门Delphi的最佳资料。

Global site tag (gtag.js) - Google Analytics