Pascal在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
显示目录

指针



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

指针

Pascal中的指针简单易学.使用指针可以更轻松地执行某些Pascal编程任务,并且在不使用指针的情况下无法执行其他任务(如动态内存分配).所以有必要学习指向成为一个完美的Pascal程序员.让我们从简单而简单的步骤开始学习它们.

如您所知,每个变量都是一个内存位置,每个内存位置都定义了地址,可以使用指针变量的名称进行访问,表示内存中的地址.

指针是什么?

指针是一个动态变量,其值是另一个变量的地址,即,存储位置的直接地址.与任何变量或常量一样,必须先声明指针,然后才能使用它来存储任何变量地址.指针变量声明的一般形式是 :

 type 
 ptr-identifier = ^ base-variable-type;

指针类型是通过在插入符号(^)的向上箭头前缀为基本类型来定义的.基类型定义数据项的类型.一旦指针变量被定义为某种类型,它就可以仅指向该类型的数据项.一旦定义了指针类型,我们就可以使用 var 声明来声明指针变量.

 var 
 p1,p2,...:ptr-identifier;

以下是一些有效的指针声明 :

type
   Rptr = ^real;
   Cptr = ^char;
   Bptr = ^ Boolean;
   Aptr = ^array[1..5] of real;
   date-ptr = ^ date;
      Date = record
         Day: 1..31;
         Month: 1..12;
         Year: 1900..3000;
      End;
var
   a, b : Rptr;
   d: date-ptr;

使用相同的插入符号(^)取消引用指针变量.例如,由指针 rptr 引用的关联变量是 rptr ^ .它可以作为 : 去;


 rptr ^:= 234.56;

以下示例将说明此概念 :

program exPointers;
var
   number: integer;
   iptr: ^integer;

begin
   number := 100;
   writeln('Number is: ', number);

   iptr := @number;
   writeln('iptr points to a value: ', iptr^);

   iptr^ := 200;
   writeln('Number is: ', number);
   writeln('iptr points to a value: ', iptr^);
end.

编译并执行上述代码时,会产生以下结果 :

Number is: 100
iptr points to a value: 100
Number is: 200
iptr points to a value: 200

以Pascal打印内存地址

在Pascal中,我们可以使用地址运算符(@)将变量的地址赋给指针变量.我们使用此指针来操作和访问数据项.但是,如果由于某种原因,我们需要使用内存地址本身,我们需要将它存储在一个字类型变量中.

让我们扩展上面的例子来打印内存地址存储在指针 iptr :

program exPointers;
var
   number: integer;
   iptr: ^integer;
   y: ^word;

begin
   number := 100;
   writeln('Number is: ', number);
   iptr := @number;
   writeln('iptr points to a value: ', iptr^);

   iptr^ := 200;
   writeln('Number is: ', number);
   writeln('iptr points to a value: ', iptr^);
   y := addr(iptr);
   writeln(y^); 
end.

编译并执行上述代码时,会产生以下结果 :

Number is: 100
iptr points to a value: 100
Number is: 200
iptr points to a value: 200
45504

NIL指针

如果您将 NIL 值分配给指针变量,这是一个好习惯没有确切的地址要分配.这是在变量声明时完成的.指定为 NIL 的指针指向无处.请考虑以下程序 :

program exPointers;
var
   number: integer;
   iptr: ^integer;
   y: ^word;

begin
   iptr := nil;
   y := addr(iptr);

   writeln('the vaule of iptr is ', y^);
end.

编译并执行上述代码时,会产生以下结果 :

The value of ptr is 0

要检查 nil 指针,可以使用if语句,如下所示 :

if(ptr <> nill )then     (* succeeds if p is not null *)
if(ptr = nill)then    (* succeeds if p is null *)

Pascal指针详细信息

指针有很多但是简单的概念,它们对Pascal编程非常重要.有以下几个重要的指针概念,Pascal程序员应该清楚 :

Sr.No 概念&描述
1 Pascal - 指针算术
有四个算术运算符可用于指针:增量,减量,+, -
2 Pascal - 指针数组
你可以定义数组来保存多个指针.
3 Pascal - 指向指针的指针
Pascal允许你在指针上指针等等.
4 在Pascal中传递指向子程序的指针
通过引用或地址传递参数都可以使传递的参数在通过被调用的子程序调用子程序.
5 返回Pascal中子程序的指针
Pascal允许子程序返回指针.
由JSRUN为你提供的Pascal在线运行、在线编译工具
        JSRUN提供的Pascal 在线运行,Pascal 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout