您的位置:首页 > 移动开发 > Objective-C

Delphi_05_Delphi_Object_Pascal_基本语法_03

2016-03-27 11:56 489 查看
  继续Delphi的学习之旅, 废话不多说,直接贴代码。

{       Delphi基本语法
1、对象
2、指针
3、类型别名 和 类型转换
}

program DelphiObject;

{$APPTYPE CONSOLE}

uses
SysUtils;
type
{       对象
1、对象通过关键字 class定义
2、对象可以看成是带函数或者过程的记录
3、对象通过 . 号引用对象的成员
4、这里简单的介绍一下对象,后面专门论述对象
}
TClass = class
className:string;
end;

{       指针
1、Delphi中的通用指针类型为 Pointer
2、指针可以通过Type 和 ^ 来定义一个新的数据类型
}
//定义一个指针数据类型 PInt;
PInt = ^Integer;

{       类型别名
1、Delphi中的类型别名类似于C语言中的typedef
2、通过关键字 type 定义类型别名
3、语法格式为
type
类型别名 = 原类型名;
4、强类型别名, 强类型别名将生成一种新的数据类型,与代表的原类型不是
一种类型,语法格式如下
type
强类型别名 = type 原类型名
5、强类型别名和原类型在函数或者过程的 Out 或 In 参数中是不同的类型,这
需要注意,其他时候是赋值兼容的。
}
stronglyTypeInt = type integer;

var
//定义指针变量
pIntTest:PInt;
PIntTest1:PInt;
varInt:integer;

pointerStr:string;

{       无类型指针
1、无类型指针通过 pointer 来定义
}
pointerNoType : Pointer;

//定义强类型别名变量
varStronglyInt:stronglyTypeInt;

begin
{   指针操作
1、New()函数分配新的内存空间,然后通过Dispose()释放申请的空间
2、指针赋值给指针
3、指针指向变量,通过 @ 操作符完成
4、引用指针变量指向的对象的值, 通过 ^ 运算符完成
5、new()函数/Dispose()函数分配的指针,又称为动态指针,可以根据数据类型
自动确定内存空间大小
6、GetMem()函数/FreeMem()函数也能动态分配,但是不能自动确定大小,需要手动
指定大小
}
//  New()函数申请指针
New(pIntTest);
pointerStr := Format('%p',[pIntTest]);
writeln(pointerStr);

//指针变量赋值给指针变量
pIntTest1 := pIntTest;
//通过Format将指针格式转化为字符串
pointerStr := Format('%p',[pIntTest1]);
writeln(pointerStr);

//指针指向变量
pIntTest1 := @varInt;
//引用指针变量指向的值
varInt := 10 ;
//通过Format将指针解引用转换化为字符串
pointerStr := 'Reference varInt via pointer:' + Format('%d',[pIntTest1^]);
writeln(pointerStr);

pIntTest^ := 100;
//通过Format将指针解引用转换化为字符串
pointerStr := Format('%d',[pIntTest^]);
writeln(pointerStr);
//释放通过new()函数申请的空间
Dispose(pIntTest);

// GetMem() 和 FreeMem()
GetMem(pIntTest,sizeof(integer));
pIntTest^ := 56;
writeln(pIntTest^);
FreeMem(pIntTest, sizeof(integer));

//无类型指针指向变量
pointerNoType := @varInt;
//无类型指针不能直接引用指向的变量
// pointerNotype ^ := 23;  //错误
//无类型指针需要进行强制类型转换才能用,而且必须是指针类型才能转换
// integer(pointerNoType)^ := 23; 错误, 因为 integer 类型不是指针类型
PInt(pointerNoType)^ := 23;
writeln(PInt(pointerNoType)^);

//强类型别名定义的对象
varStronglyInt := varInt;
writeln(varStronglyInt);

{   强制类型转换
1、类型转换的语法格式为
类型名(表达式或者变量);
}
{
PInt(pointerNoType)^ := 23;    语句先进行强制类型转换, 将 pointerNoType
强制转换为 Pint类型,然后再 ^ 解引用,最后进行赋值
}

readln;
end.


  欢迎转载,转载请注明来源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: