type base is INteger subtype s0 n TYPE is base range1..1000-子类型 type diverse is new base range 1.. 1000 派生类型 A, B: BASE C, D: SON TYPE E: DIVERSE A: =B+C 合法,结果为B类型赋给A A =C+E 不合法 A: =C+ SON TYPE(E) 一合法,有显式强制 A: -E 不合法,两个类型 E: =B+BASE(E) 不合法
type BASE is INTEGER; subtype SON_TYPE is BASE range 1..1000; --子类型 type DIVERSE is new BASE range 1..1000; --派生类型 A, B: BASE; C, D: SON_TYPE; E: DIVERSE; … A:= B+C, --合法,结果为B类型赋给A A:= C+E; --不合法 A:= C + SON_TYPE(E); --合法,有显式强制 A:= E ; --不合法,两个类型 E:= B+BASE(E); --不合法 续
3.2计算对象的实现-存储 存储对象是程序对象在计算机中的实现 程序对象不一一对应为存储对象 x:=0;x,0是两程序对象 只有一个存储对象x加指令清零 初值常量也不作为单独存储对象
3.2 计算对象的实现- 存 储 存储对象是程序对象在计算机中的实现 程序对象不一一对应为存储对象 x:=0; x,0是两程序对象 只有一个存储对象x加指令清零 初值常量也不作为单独存储对象
3.2.1程序变量的时空特性 引用和指针 P指针是地址变量是P所指的内容,也有左值和右值 P左值是P所指地址值,即P的值 2P右值是所指地址内的内容值 136 312 ABC (RA)312(RB)316 (RC)320 140 316 136 140 144 144 320 (p1)448 (A)136 (B)140 (C)144 136 4274.54 331227 607.01 (p2)450 144 引用是常指针是变量的别名,但实现是不一样的
3.2.1 程序变量的时空特性 引用和指针 P指针是地址变量 *P是P所指的内容,也有左值和右值 *P左值是P所指地址值,即P的值 *P右值是所指地址内的内容值 136 140 144 A B C 312 316 320 136 140 144 (RA)312 (RB)316 (RC)320 136 144 (p1)448 (p2)450 4274.54 3312.27 607.01 (A)136 (B)140 (C)144 引用是常指针是变量的别名, 但实现是不一样的
递引用 dereference 通过指针变量引用变量的值为递引用 2P1右值即递引用 有些语言显式递引用算符如 FORTH的a 113 VARIABLE XX(声明变量xx并赋初值13) 20 VARIABLE Y(声明变量Y并赋初值0) 3 xx@2*Y (相当于Y=x*米2) 如果只写xx2*则为将xx的地址乘以2放在Y之中
递引用 dereference 通过指针变量引用变量的值为递引用 *P1右值即递引用 有些语言显式递引用算符如FORTH的@ 1 13 VARIABLE xx (声明变量xx并赋初值13) 2 0 VARIABLE Y (声明变量Y并赋初值0) 3 xx @ 2 * Y ! (相当于Y=xx*2) 如果只写xx 2 * 则为将xx的地址乘以2放在Y之中
321变量的时态 分配/未分配除分配 分配:为程序对象创建一存储对象 编译时分配叫静态分配 allocate 运行时分配叫动态分配如声明指针p,执new才分配 未分配:声明了未分配运行时分配 除分配:取消存储对象(程序对象) delete操作显式 自动除配:无用单元收集 Garbage collection 动态语言有,静态可有Ada可没有C
3.2.1 变量的时态 • 分配/未分配/除分配 – 分配: 为程序对象创建—存储对象 编译时分配叫静态分配 allocate 运行时分配叫动态分配如声明指针p, 执new才分配 – 未分配: 声明了未分配运行时分配 – 除分配: 取消存储对象(程序对象) delete操作显式 – 自动除配: 无用单元收集Garbage collection 动态语言有,静态可有Ada可没有C