继续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. PAT甲级 1001. A+B Format (20)

    题目原文: Calculate a + b and output the sum in standard format -- that is, the digits must be separated ...

  2. 微信小程序开发日记——高仿知乎日报(中)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...

  3. 品牌营销:不要Beat,要逼格!

             品牌营销:不要Beat,要逼格! 奥美的创始人大卫·奥格威说,广告营销应当是"具有风度的推销产品".而当下的营销手段,"风度"早已被抛之脑后, ...

  4. [AlwaysOn Availability Groups] 健康模型 Part 2 ——扩展

    健康模型扩展 第一部分已经介绍了AlwayOn健康模型的概述.现在是创建一个自己的PBM策略,然后设置为制定的归类.创建这些策略,创建之后修改一下配置,dashboard就会自动评估这些策略. 场景, ...

  5. Photoshop、Illustrator思维导图笔记

    半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.

  6. 用Go语言做产品半年的一些感觉

    用Go语言做产品刚好半年,有一些感觉跟大家说道说道. 在使用Go之前,我常常想象,无法使用先进的Debug工具会对工作进度造成多么巨大的影响.甚至在Visual Studio的娇惯下认为,不能调试基本 ...

  7. 10 Minutes to pandas

    摘要   一.创建对象 二.查看数据 三.选择和设置 四.缺失值处理 五.相关操作 六.聚合 七.重排(Reshaping) 八.时间序列 九.Categorical类型   十.画图      十一 ...

  8. ceph架构剖析

    unitedstack有云 :https://www.ustack.com/blog/ceph_infra/

  9. CodeSmith模板代码生成实战详解

    前言 公司项目是基于soa面向服务的架构思想开发的,项目分解众多子项目是必然的.然而子项目的架子结构种类也过多的话,就会对后期的开发维护产生一锅粥的感觉.为了尽可能的在结构层避免出现这种混乱的现象,我 ...

  10. 【译】Unity3D Shader 新手教程(6/6) —— 更好的卡通Shader

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 动机 如果你想了解以下几件事,我建议你阅读以下这篇教程: 想知道如何写一个multipass的toon shade ...