lexical scope 0.250 0.250 0.2500.250 dynamic scope 0.2500.125 0.2500.125
lexical scope 0.250 0.250 0.250 0.250 dynamic scope 0.250 0.125 0.250 0.125
数据表示各种数据对象的存储分配 数据对象的属性 name名字,名称 类型 location内存地址 value 值 component成分
数据表示各种数据对象的存储分配 数据对象的属性 name 名字,名称 type 类型 location 内存地址 value 值 component 成分
数据表示(固定长度,直接或间接表示) 简单变量: char: I byte integers: 2 or 4 bytes floats: 4 to 16 bytes booleans: I bit(but usually 1 byte) 指针: unsigned integers 维数组:一块连续的存储区 多维数组:一块连续的存储区,按行存放 结构(记录):把所有域( field)存放在一块连续的存储区 对象:类的实例变量象结构的域一样存放在一块连续的存储区, 但方法(成员函数)不存在该对象里 指令:
数据表示(固定长度,直接或间接表示) 简单变量: char: 1 byte integers: 2 or 4 bytes floats: 4 to 16 bytes booleans: 1 bit (but usually 1 byte) 指针:unsigned integers 一维数组:一块连续的存储区 多维数组:一块连续的存储区,按行存放 结构(记录):把所有域(field)存放在一块连续的存储区 对象:类的实例变量象结构的域一样存放在一块连续的存储区, 但方法(成员函数)不存在该对象里 指令:
例:按行A是10×20的二维数组 A[1,1 A[1,2 第一行 A[1,20 A[2,1 第二行 A[10,20 第十行
例:按行 A 是 1020 的二维数组 A[1, 1] A[1, 2] . . 第一行 . . A[1, 20] A[2, 1] . . 第二行 . . . . . . . . A[10, 20] 第十行
数组元素的地址计算 设A[1,1的地址为a,每个元素占一个字 A[i,j的地址:a+(i-1)×20+(j-1) (a-2l)+(20i+j) 般: arrayA[1:u1,l2;u2,……,ln;ul 令d=u11+1 元素A[i1,i,……,i的地址D D=a+(i-1)d2d3…dn+(i212)dl3d……dn n-1 -ld d+(i-1) 经因子分解后得D= CONSPART+ VARPART
数组元素的地址计算 设 A[1,1]的地址为 a,每个元素占一个字 A[i,j]的地址: a+(i-1)20+(j-1) =(a-21)+(20i+j) 一般:arrayA[l1:u1,l 2:u2,……,l n:un ] 令 di=ui -li+1 元素 A[i1,i 2,……,i n ]的地址 D D=a+(i 1 -l1)d2d3……dn+(i 2 -l2)d3d4……dn +……+(i n-1-l n-1)dn+(i n -l n) 经因子分解后得 D=CONSPART+VARPART