设为首页 加入收藏

TOP

Delphi_05_Delphi_Object_Pascal_基本语法_03
2017-10-10 12:06:28 】 浏览:4674
Tags:Delphi_05_Delphi_Object_Pascal_ 基本 语法 _03

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

 

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Delphi_04_Delphi_Object_Pascal_.. 下一篇Delphi_06_Delphi_Object_Pascal_..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目