博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi_05_Delphi_Object_Pascal_基本语法_03
阅读量:6009 次
发布时间:2019-06-20

本文共 2588 字,大约阅读时间需要 8 分钟。

  继续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.

 

  欢迎转载,转载请注明来源。

转载于:https://www.cnblogs.com/volcanol/p/5325292.html

你可能感兴趣的文章
Android 事件总线 框架
查看>>
SpringBoot-00-之修改启动标题
查看>>
Android基础_3 Activity相对布局
查看>>
浅析KOA(1)
查看>>
Permutations I II@LeetCode
查看>>
浅尝一个排程引擎Optaplanner - 前序
查看>>
剖析nodejs的事件循环
查看>>
深入解读Service Mesh背后的技术细节
查看>>
ubuntu下c语言hello world
查看>>
架构师的御人之道
查看>>
高效编写Dockerfile的几条准则
查看>>
响应式布局的常用解决方案对比(媒体查询、百分比、rem和vw/vh)
查看>>
在虚拟现实中解谜,PSVR游戏《Statik》将于4月24日正式发售
查看>>
云计算史上的第一次开箱直播 阿里云神龙技术架构首次全方位曝光
查看>>
android opencv2.4.10使用SIFT编译出libnonfree.so
查看>>
Monitorix 3.11.0 发布,系统监控工具
查看>>
pyteam v0.1 更新,新增接口文档管理、聊天室与任务附件上传功能
查看>>
go-fastdfs v1.1.9增加文件自动迁移功能、文件可重复选项
查看>>
Riverbed发布SteelFusion 5.0,对NAS存储提供支持
查看>>
BTA | 朱佩江:Pallet项目,“细腰”链通互联网价值体系
查看>>