继续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 := ;
//通过Format将指针解引用转换化为字符串
pointerStr := 'Reference varInt via pointer:' + Format('%d',[pIntTest1^]);
writeln(pointerStr); pIntTest^ := ;
//通过Format将指针解引用转换化为字符串
pointerStr := Format('%d',[pIntTest^]);
writeln(pointerStr);
//释放通过new()函数申请的空间
Dispose(pIntTest); // GetMem() 和 FreeMem()
GetMem(pIntTest,sizeof(integer));
pIntTest^ := ;
writeln(pIntTest^);
FreeMem(pIntTest, sizeof(integer)); //无类型指针指向变量
pointerNoType := @varInt;
//无类型指针不能直接引用指向的变量
// pointerNotype ^ := 23; //错误
//无类型指针需要进行强制类型转换才能用,而且必须是指针类型才能转换
// integer(pointerNoType)^ := 23; 错误, 因为 integer 类型不是指针类型
PInt(pointerNoType)^ := ;
writeln(PInt(pointerNoType)^); //强类型别名定义的对象
varStronglyInt := varInt;
writeln(varStronglyInt); { 强制类型转换
1、类型转换的语法格式为
类型名(表达式或者变量);
}
{
PInt(pointerNoType)^ := 23; 语句先进行强制类型转换, 将 pointerNoType
强制转换为 Pint类型,然后再 ^ 解引用,最后进行赋值
} readln;
end.

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

Delphi_05_Delphi_Object_Pascal_基本语法_03的更多相关文章

  1. Java千百问_03基本的语法(005)_二进制是如何做位运算的

    点击进入_很多其它_Java千百问 二进制是如何做位运算的 程序中的全部数在计算机内存中都是以二进制的形式储存的.位运算说白了,就是直接对整数在内存中的二进制位进行操作. 其它运算符看这里:java种 ...

  2. Java千百问_03基本的语法(001)_局部变量、类变量、实例变量有什么差别

    点击进入_很多其它_Java千百问 局部变量.类变量.实例变量有什么差别 在聊局部变量.类变量.实例变量有什么差别之前,我们须要了解一下Java变量. 1.Java变量是什么 在数学世界中,我们知道有 ...

  3. Java基础知识二次学习-- 第二章 基础语法与递归补充

    第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...

  4. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  6. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

  7. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  8. Velocity初探小结--velocity使用语法详解

    做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...

  9. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

随机推荐

  1. 微信小程序监控 - HotApp统计

    HotApp小程序统计,第一个专业的微信第三方小程序监控统计工具 1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道 ...

  2. 信息安全-1:python之playfair密码算法详解[原创]

    转发注明出处: http://www.cnblogs.com/0zcl/p/6105825.html 一.基本概念 古典密码是基于字符替换的密码.加密技术有:Caesar(恺撒)密码.Vigenere ...

  3. 怎样两个月完成Udacity Data Analyst Nanodegree

    在迷恋数据科学很久后,我决定要在MOOC网站上拿到一份Data Science的证书.美国三个MOOC网站,Udacity上的课程已经被分成了数个nanodegree,每个nanodegree都是目前 ...

  4. Linux设备管理(五)_写自己的sysfs接口

    我们在Linux设备管理(一)_kobject, kset,ktype分析一文中介绍了kobject的相关知识,在Linux设备管理(二)_从cdev_add说起和Linux设备管理(三)_总线设备的 ...

  5. win10系统下连接无线网络掉线问题解决办法

    打开驱动精灵----系统诊断 找一个可修复的驱动点击 选择连不上网中的查看更多 有连不上网络,网络连接受限,解决无线间歇性掉网问题 进入计算机管理----设备管理 修改无线网络属性(名称含有wirel ...

  6. ASP.NET Aries 3.0发布(附带通用API设计及基本教程介绍)

    主要更新: 1:升级处理机制(js请求由同步变更为异步) 2:优化前端JS:包括API和配置方式. 3:增加InputDialog功能. 4:增远远程验证功能. 5:优化权限安全机制. 6:增加一次请 ...

  7. 开源一个WEB版本GEF,基于SVG的网页流程图框架

    8月开始断断续续的制作这个web gef,没有任何依赖,完全原生js开发,目前已经完成了雏形,基本上可以在项目里应用了. 下图展示的是demo1的效果,包括拖拽,生成连线,点击生成\取消墙体,整个de ...

  8. 正确地编写Objective-C中的便捷方法

    在Objective-C中,如果某个类方法的返回类型就是这个类的实例(例如NSString类中的stringWithFormat:),就可以将这种类方法称为便捷方法(Convenience Metho ...

  9. ABP(现代ASP.NET样板开发框架)系列之5、ABP启动配置

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之5.ABP启动配置 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  10. 苹果台式一体机笔记本安装win双系统攻略教程

    步骤 序:win系统下载 :http://www.itellyou.cn 选择要安装的系统进行下载,本文以win7为例   进入苹果系统,左上角——前往——实用工具——BootCamp 助理 点击继续 ...