在pascal环境下学习record

对比C语言 struct 的使用

type
    pud=^userdata_struct;                                      //用^定义指针类型,record定义前被使用的唯一情况,与C不同

    userdata_copy_fn=function(para:pud):pud;     //定义函数类型
    userdata_free_fn=procedure(para:pud);

    userdata_struct=record
        copy_fn:userdata_copy_fn;                         //record的成员可以是函数类型,与C同
        free_fn:userdata_free_fn;
        userdata_len:UInt16;
        data:array [0..15] of ansichar;
    end;
    ud=userdata_struct;

function setlast(k:pud):pud;                                 //按定义的函数类型,定义一个具体函数,
begin                                                                   //不能使用函数类型名,与C不同  
    showmessage(inttostr(k.userdata_len));
end;

procedure kankan;
var
    mm:ud;
    nn:pud;
begin
    nn:=@mm;
    nn.userdata_len:=1;
    nn.copy_fn:=setlast;
    nn.copy_fn(nn);
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值