易截截图软件、单文件、免安装、纯绿色、仅160KB

DELPHI如何使用指针?

  DELPHI如何使用指针?
大家都认为,C语言之所以强大,以及其自由性,很大部分体
现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。Basic不
支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今的Object
Pascal,可以说在指针运用上,丝毫不会逊色于C语言的指针。
以下内容分为八部分,分别是
一、类型指针的定义
二、无类型指针的定义
三、指针的解除引用
四、取地址(指针赋值)
五、指针运算
六、动态内存分配
七、字符数组的运算
八、函数指针
一、类型指针的定义。对于指向特定类型的指针,在C中是这样定义的:
int
*ptr;
char *ptr;
与之等价的Object Pascal是如何定义的呢?
var
ptr :
^Integer;
ptr : ^char;
其实也就是符号的差别而已。
二、无类型指针的定义。C中有void
*类型,也就是可以指向任何类型数据的指针。Object Pascal为其定义了一个专门的类型:Pointer。于是,
ptr :
Pointer;
就与C中的
void *ptr;
等价了。
三、指针的解除引用。要解除指针引用(即取出指针所指区域的值),C 的语法是
(*ptr),Object Pascal则是 ptr^。
四、取地址(指针赋值)。取某对象的地址并将其赋值给指针变量,C 的语法是
ptr =
&Object;
Object Pascal 则是
ptr :=
@Object;
也只是符号的差别而已。
五、指针运算。在C中,可以对指针进行移动的运算,如:
char a[20];
char
*ptr=a;
ptr++;
ptr+=2;
当执行ptr++;时,编译器会产生让ptr前进sizeof(char)步长的代码,之后,ptr将指向a[1]。ptr+=2;这句使得ptr前进两个sizeof(char)大小的步长。同样,我们来看一下Object
Pascal中如何实现:
var
a : array [1..20] of Char;
ptr : PChar; //PChar 可以看作
^Char
begin
ptr := @a;
Inc(ptr); // 这句等价于 C 的 ptr++;
Inc(ptr, 2);
//这句等价于 C 的
ptr+=2;
end;
只是,Pascal中,只允许对有类型的指针进行这样的运算,对于无类型指针是不行的。
六、动态内存分配。C中,使用malloc()库函数分配内存,free()函数释放内存。如这样的代码:
int
*ptr, *ptr2;
int i;
ptr = (int*) malloc(sizeof(int) * 20);
ptr2 =
ptr;


相关文档:

Delphi播放Gif和Flash动画的方法


显示一个GIF动画
procedure ShowGIF( GIFFileName : String );
var TargetFrameName,PostData,Heads,Flags : OleVariant; URL : widestring; begin TargetFrameName := '';{指定Frame的空字符串时,则在当前Frame中打开动画文件} PostData := false;{不发送数据} Heads := '';{Header信息为空} Flags := 0;{Flags设为0} ......

Delphi中实现文件拷贝的三种方法

1.调用API函数
procedure CopyFile(fromFileName,ToFileName:string);
var
f1,f2:file;
Begin
AssignFile(f1,fromFileName); file://指定源文件名
AssignFile(f2,ToFileName); file://指定目标文件名
Reset(f1);
Try
Rewrite(f2);
Try
If Lzcopy(TfileRec(f1).handle,TfileRec(f2).Handle)<0
Then
Raise ......

Delphi中实现程序的延时的方法

在Delphi中,通常可以用以下三种方法来实现程序的延时,即TTtimer控件,Sleep函数,GetTickCount函数。但是其精度是各不相同的。
一、三种方法的简单介绍
1)TTtimer控件
  TTtimer控件的实质是调用Windows API定时函数SetTimer和KillTimer来实现的,并简化了对WM_TIMER 消息的处理过程。通过设置OnTimer事
件和Inte ......

一名Delphi程序员的开发习惯

一.建立工程目录
   首先,第一步要做的,当然是给新项目建一个单独的目录(别笑)。目录名称与项目名称同名,或者另取一个也可,只要清楚、简练。然后,在此目录中创建以下各个目录:
   <Doc>:用来存放该项目相关的开发文档(需求说明,概要设计,详细设计等等等等);
   < ......

Delphi简单U盘传染病毒

program Project1;
{$APPTYPE CONSOLE}
uses
   windows, Tlhelp32,   SysUtils;
//===========================获得系统目录=======================================
function GetWinDir: string;
var
   Buf: array[0..MAX_PATH] of char;
begin
   GetSystemDirector ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号