b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(43)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

指针被类型化以表示在它指定的位置上存储某一类型的数据。

指定类型的指针只表示特定类型的数据。指针在内存中占据

Overview of pointers(指针概述)

要了解指针如何工作,看下面的例子:

1 var

2X, Y: Integer;// X和Y是整数变量

: ^Integer;// P指向一个整数

4 begin

5X := 17;// 给X赋值

6P := @X;// 把X的地址赋给P

7Y := P^;// dereference P;把结果赋给

8 end;

第2行声明X和Y为整数类型的变量,第3行声明P是一个指向整数的指针,这表明

- 62 - Pointer4个字节。Y P可以指向X或 类型表示一个任意类型的指针,而

Data types, variables and constants

Y的存储位置。第5行把一个值赋给X,第6行把X的地址(用@X表示)赋给P。最后,在第7行,取得P所指位置的值(用P^表示)并把它赋给Y。这些代码执行后,X和Y有相同的值,即17。

@运算符,这里我们用来取得一个变量的地址,它同样可用于函数或过程。要了解更多信息,请参考The @ operator和Procedural types in statements and expressions。

^符号有两个用途,在我们的例子中都用到了。当它出现在一个类型标志符前面时: ^typeName

它表示一个指向typeName类型的变量的指针;当它出现在一个指针变量的后面时:

pointer^

它表示对指针解除引用,换句话说,它返回在指针所指向的地址处保存的值。

我们的例子看起来是在兜圈子,它只不过是把一个变量的值复制给另一个变量而已,我们完全可以通过一个简单的赋值语句来完成,但指针有几个用途:首先,理解指针能帮助你理解常在代码中虽然没有明确使用指针,但它们却在背地里发挥作用。使用大的、动态分配内存(块)的任何数据类型都使用指针。例如,长字符串就是一个隐含的指针,类变量也是;此外,一些高级的编程技术需要使用指针。

最后,指针有时是跳过Object Pascal严格的(数据)类型匹配的唯一方法。使用一个通用指针(来引用一个变量,并把它转换为其它类型,然后重新引用它,这样你就可以把它作为任何类型对待。比如,下面的代码把一个实数变量的值赋给一个整数变量。type

PInteger = ^Integer; var

R: Single; I: Integer; P: Pointer; PI: PInteger; begin ...

P := @R;

PI := PInteger(P); I := PI^; end;

当然,实数和整数有不同的存储格式,上面的赋值只简单地把除了使用@运算符,你也可以使用几个标准例程给一个指针赋值。赋给指针,而Addr和Ptr函数则返回一个指向特定变量或地址的指针。像P1^.Data^表示的那样,对指针解除引用可用作限定符,也可以被限定。保留字nil是一个特殊常量,可赋给任何指针(类型)Pointer types(指针类型)About pointer types(关于指针类型)使用下面的语法,你能声明一个任意类型的指针,type pointerTypeName = ^type

当定义一个记录类型(或其它数据类型)我们不需要拷贝一大块内存。

标准指针类型有许多理由存在,最通用的是

R。当nil被赋给一个指针时,指针不表示任何东西。

习惯上也就定义了一个此类型的指针,Pointer,它可以指向任何数据类型,但不能对它解除引用,


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-43.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 李向荣
      李向荣

      我们就不仅仅是丧失机遇的问题了

    • 戴军
      戴军

    • 晋定公姬午
      晋定公姬午

      这酒怎么酿的这成本压缩真是厉害厉害

      • 曾荣
        曾荣

        给观众带来更多更好的作品

    热点图片
    拼命载入中...