网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月12日漏签0天
pascal吧 关注:14,951贴子:132,337
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 9回复贴,共1页
<<返回pascal吧
>0< 加载中...

Variants单元;可以的。

  • 只看楼主
  • 收藏

  • 回复
  • StupidJum411
  • 合并果子
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Variants单元,无意中在FPC\2.0.4\doc\rtl.pdf中翻到的
用其定义变量可以使该变量变成任意类型!
真的????
定义方法
uses variants
var a:variant;
实现uses variants;
var a:variant;
b:char;
c:longint;
d:string;
e:boolean;
begin
b:='a';
c:=65;
d:='aa';
e:=true; //注意variant类型不能用于输入语句,只能赋值
a:=b; write(a);
a:=c; write(a);
a:=d; write(a);
a:=e; write(a);
end.
结果……
输出:
a65aaTrue
*了个**……
然而,评测机可以用这个吗?
我测试了一下各个评测的站点
洛谷:AC
NOI OpenJudge:AC
vijos:MemoryLimitExceeded
咳咳那么说这就可以用了?
数组??可以定义为数组吗?
可以定义为数组……不能赋值为数组……
uses
variants;
var
a:array[1..100] of longint;
x:variant;
begin
fillchar(a,sizeof(a),6);
x:=a;
end.
编译错误
但是我们可以这样
var
x:array[1..100] of variant;
并没有什么*用啊
但是我觉得在平时刷题的时候,variant单元还是非常有用的,可以有效减小内存,AC一些题目
各位觉得?


  • StupidJum411
  • 合并果子
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
补图
洛谷评测:
Noi OpenJudge评测:

vijos评测:

不能赋值数组:


2025-06-12 06:12:43
广告
  • StupidJum411
  • 合并果子
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
……刚刚发现
这个单元有毒
普通做法:

内存是4kB
然而用了variants:
内存是200kB
这……


  • 段错误(核突)😔
  • 方格取数
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
pwj,你怎么都到这里来了。。


  • __Say__Say__
  • write
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
貌似不用uses variants;


  • happy1312house
  • 能量项链
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
http://www.noi.cn/about/rules/362-noi


  • 生若梦青丝绕
  • 算法导论
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
虽然注意到了日期,但我还是想说:
LZ犯什么傻,NOI根本不允许用uses调用单元
但是
我们不用调用任何单元,就可以用指针实现C/C++中的void:
pointer ! (划重点)
由于是指针,所以你得用函数先给他开内存才能赋值
不过你可以在开内存的时候给他指定占用内存的大小
完爆你发现的Variants


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回pascal吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示