lexical scope 0.250 0.250 0.250 0.250 dynamic scope 0.250 0.125 0.250 0.125
lexical scope 0.250 0.250 0.250 0.250 dynamic scope 0.250 0.125 0.250 0.125
数据表示各种数据对象的存储分配 数据对象的属性 name名字,名称 type 类型 location内存地址 value 值 component 成分
数据表示各种数据对象的存储分配 数据对象的属性 name 名字,名称 type 类型 location 内存地址 value 值 component 成分
数据表示(固定长度,直接或间接表示) 简单变量: char:1 byte integers:2 or 4 bytes floats:4 to 16 bytes booleans:1 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是10x20的二维数组 A1,1] A[1,2] 第一行 A1,20] A2,1 第二行 A[10,20] 第十行
例:按行 A 是 1020 的二维数组 A[1, 1] A[1, 2] . . 第一行 . . A[1, 20] A[2, 1] . . 第二行 . . . . . . . . A[10, 20] 第十行
数组元素的地址计算 设A1,1]的地址为a,每个元素占一个字 A[i,j的地址:a+(i-1)×20+(j-1) =(a-21)+(20i+j) 一般:arrayA[l:u,2:2,…,lh:u 令d=u-l+1 元素A[i1,i2,…,in的地址D D=a+(i-l1)d2d3…dn+((i2-l2)d3d4…dn ++(inI dn+(in-In) 经因子分解后得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