第12章数据共用存储单元 和数据块子程序 §1等价语句 quivalence语句) 等价语句:使同一程序单元中的多个变量共用同一个 存储单元。 §2公用语句( common语句) 公用语句:使不同程序单元的变量共用同一个存储单 §3数据块子程序自学) 数据块子程序:给公用区中的变量赋初值。 2021/2/24
1 2021/2/24 §1 等价语句(equivalence语句 ) 等价语句:使同一程序单元中的多个变量共用同一个 存储单元。 §2 公用语句 (common语句) 公用语句:使不同程序单元的变量共用同一个存储单 元。 §3 数据块子程序(自学) 数据块子程序:给公用区中的变量赋初值。 第12章 数据共用存储单元 和数据块子程序
§1等价语句(p292294) 2 等价语句即 equivalence语句)的作用是使本程序单元 中的多个变量共用同一个存储单元。 一般飛式:equⅳ valence(变量表1,(变量表2), 功能:每一对括号内变量表中的变量将占用同一个存 储单元,通常称这些变量等价。 9A: equivalence(w, st),(im, npl, jj2, neg) ()每个变量表中至少应有两个变量,变量之间用逗号 隔开,变量可以是普通变量、数组或数组元素,但不能是 虚参。 §1等价语句 2021/2/24
2 2021/2/24 §1 等价语句(p292-294) 等价语句(即equivalence语句)的作用是使本程序单元 中的多个变量共用同一个存储单元。 一般形式: 功能:每一对括号内变量表中的变量将占用同一个存 储单元,通常称这些变量等价。 如: ⑴ 每个变量表中至少应有两个变量,变量之间用逗号 隔开,变量可以是普通变量、数组或数组元素,但不能是 虚参。 equivalence (变量表1), (变量表2), … equivalence (w, st), (im, npl, jj2, neg) §1 等价语句
(2)变量表中的变量类型既可以相同也可以不同:当类3 型相同时,变量将具有相同的值;当类型不同时,由于不 同类型变量所占的存储单元长度不同,变量将不具有相同 的值。 【例121】 equivalence(im,np,j2,neg) im=1 write(", )im, npl, jj2, neg end 【例122】 equivalence(a,b, a=1.0 write(, ")a, b, end §1等价语句 2021/2/24
3 2021/2/24 ⑵ 变量表中的变量类型既可以相同也可以不同:当类 型相同时,变量将具有相同的值;当类型不同时,由于不 同类型变量所占的存储单元长度不同,变量将不具有相同 的值。 【例12.1】 【例12.2】 equivalence (im, npl, jj2, neg) im=1 write(* , *)im, npl, jj2, neg end equivalence (a, b, m) a=1.0 write(* , *)a, b, m end §1 等价语句
(3)当变量表中的变量是数组名或数组元素、且数组的4 类型相同时,则每个数组中相对应的数组元素将共用同一 个存储单元。 如: real a(8),b(42,c(2,2,2) equivalence(a, b, c) a(1)a(2)a(3)a(4)|a(5)a(6)(a7)a(8) b(1,1)b(2,1)b(3,1)b(41)b(1,2)b(2,2)b(32)b(4,2) c(1121121c(21c(112c(2,1,2)c(12,2)c(222) 如: real a(2,3),b(4) equivalence (a(2, 2),b(2)) a(1112(21)a(1,2)a(2,2)a(1,3)a(2,3) b(1)b(2)b(③3)b(4) §1等价语句 2021/2/24
4 2021/2/24 ⑶ 当变量表中的变量是数组名或数组元素、且数组的 类型相同时,则每个数组中相对应的数组元素将共用同一 个存储单元。 如: 如: real a(8), b(4,2), c(2,2,2) equivalence (a, b, c) §1 等价语句 a(1) b(1,1) c(1,1,1) a(2) b(2,1) c(2,1,1) a(3) b(3,1) c(1,2,1) a(4) b(4,1) c(2,2,1) a(5) b(1,2) c(1,1,2) a(6) b(2,2) c(2,1,2) (a7) b(3,2) c(1,2,2) a(8) b(4,2) c(2,2,2) real a(2,3), b(4) equivalence ( a(2,2), b(2) ) a(1,1) a(2,1) a(1,2) b(1) a(2,2) b(2) a(1,3) b(3) a(2,3) b(4)
如: real a(2,3),b(4) 5 equivalence (a(1,2),c), b(1),c) a0111a(21)a(1,2)|a(22)a(1,3)a23 b(1)b(2)b(3)b(4) (4)当变量表中的变量是数组名或数组元素、但数组的 类型不同时,则每个数组中的数组元素是按照其存储长度 对应的。 如: real b(4 设一个实型数据占 character c(8 4个字节,一个字符 eqμ divalence(b(2,c(2)型数据占1个字节。 b(1) b(2) b(3) b(4) §1等价语句 2021/2/24
5 2021/2/24 b(1) b(2) b(3) b(4) c(1) c(2) c(3) c(6) c(7) c(8) 如: ⑷ 当变量表中的变量是数组名或数组元素、但数组的 类型不同时,则每个数组中的数组元素是按照其存储长度 对应的。 如: §1 等价语句 a(1,1) a(2,1) a(1,2) c b(1) a(2,2) b(2) a(1,3) b(3) a(2,3) b(4) real a(2,3), b(4) equivalence ( a(1,2), c ), ( b(1), c ) real b(4) character c(8) equivalence ( b(2), c(2) ) 设一个实型数据占 4个字节,一个字符 型数据占1个字节。 c(4) c(5)