大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal入门>>PascalFAQ之语法专题         本站全文搜索: 友情提示:

PascalFAQ之语法专题
http://www.mydrs.org  1/1/2003  大榕树


程序首部的参数Input和Output是什么意思?

它们代表默认输入输出设备,但它们只在老式的Pascal语言中有存在意义。在Borland/Turbo Pascal和Free Pascal中,程序首部不需要任何参数,但为了兼容旧式的Pascal程序,编译器会忽略程序首部的所有参数。

如何获得函数返回值的地址?

在Borland/Turbo Pascal中,只能通过函数名来设置函数返回值,编译器并不提供获取函数返回值地址的方法。虽然也可以通过底层的方法来获得函数返回值的地址,但该方法不适合在信息学奥林匹克中使用。在Free Pascal中,如果使用Turbo Pascal语法,则和Borland/Turbo Pascal一样,如果使用Object Pascal语法,则可以通过使用标识符Result来像变量一样访问函数返回值,@Result返回的就是函数返回值地址。

数值参数、变量参数和常量参数有什么区别?

数值参数、变量参数和常量参数代表三种不同传递方式的子程序参数类型,它们分别用于不同的场合,使用不同的参数类型会产生不同的子程序调用执行速度、栈空间占用量和传递效果。

子程序在调用时会在栈中为数值参数分配一块新的空间,并把实际参数的值赋给数值参数,然后数值参数就可以像局部变量一样使用。子程序结束后,数值参数所占用的栈空间会自动释放,数值参数的值的改变不会影响到实际参数。数值参数可接受的实际参数为:常量、表达式和变量。

子程序在调用时会在栈中为变量参数分配四个字节的空间,并把实际参数的地址赋给这四个字节,对变量参数的访问就是通过该四个字节组成的指针来对实际参数进行访问,其访问速度比数值参数慢一些。子程序结束后,这四个字节的空间就会自动释放,变量参数的值的改变等价于实际参数的值的改变。变量参数可接受的实际参数为:变量。

对于常量参数,子程序在调用时会根据其数据类型和大小来决定是分配一块新的空间来存放实际参数的值还是分配四个字节来存放实际参数的地址,其决定根据与实际参数是否变量无关。常量参数的访问类似于常量,只能获取它的值而不能进行赋值,唯一的例外是可以使用@操作符来获得常量参数的地址。常量参数可接受的实际参数为:常量、表达式和变量。

注意,由于文件类型比较特殊,文件类型的参数只能作为变量参数传递。

如何使两个子程序可以互相调用?

Pascal要求每个标识符在使用前必须预先定义,如果两个子程序要互相调用,那么就至少有一个子程序必须在其实现之前预先声明,即预定义子程序,这可以用保留字forward完成。forward用于预定义子程序,把它放在子程序首部的后面,那么这个子程序首部就预定义了一个子程序,而其具体的实现部分可以在其它地方给出。下面是一个简单的样例:

procedure ProcA; forward;

procedure ProcB;
begin
  ProcA;
end;

procedure ProcA;
begin
  ProcB;
end;

注意,forward不能用于预定义单元中已在接口部分声明的子程序。


作 者:陈世熹
共有7377位读者阅读过此文

  • 上篇文章PascalFAQ之输入输出
  • 下篇文章PascalFAQ之数据类型

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8307]
    2. 七类高中生具有保送资格 [5911]
    3. NOI2006获奖选手名单 [4956]
    4. 关于举办NOIP2006模拟赛的通告 [4107]
    5. Turbo Pascal各语句运行速... [3595]
    6. Turbo王者归来新Delphi免费... [3182]
    7. IOI2006我国4名选手全部获得金... [2946]
    8. 关于APIO2007与IOI2007... [2764]
    9. noip倒计时 by 枯叶蝴蝶 [2684]
    10. 朱泽园:思想上的金牌更重要 [2169]
    PascalFAQ之特殊技术
    PascalFAQ之基本技巧
    PascalFAQ之数据类型
    PascalFAQ之语法专题
    PascalFAQ之输入输出
    PascalFAQ之内存分配
    PascalFAQ编译指示专题
    PascalFAQ编译模式专题
    PascalFAQ编程工具专题
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号