存储地址
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
存储地址
【题目描述】
程序设计中常遇到大批量数据,需要使用到数组、链表等数据结构来保存数据。每种数据结构都具有自己的特性,如数组:其开辟的空间是连续的,具有良好的随机访问特性,可以通过[]对存储地址的计算来访问数据。现有如下的预设,结合题目模拟[]的计算过程。
数据类型 | 占用空间 | 数据类型 | 占用空间 | 数据类型 | 占用空间 | 数据类型 | 占用空间 |
---|---|---|---|---|---|---|---|
char | 1 bytes | short | 2 bytes | long | 4 bytes | float | 4 bytes |
int | 4 bytes | long long | 8 bytes | double | 8 bytes |
当定义 int a[10]; 时,设 a[0] 地址为 0x62fdf0 = 6487536(10),其中 0x62fdf0 表示 16 进制的地址格式,其中 6487536(10) 表示 10 进制的地址格式,有:
a[1] 地址为 0x62fdf4 = 6487540(10),a[2]地址为 0x62fdf8 = 6487544(10)。
因为 a[0],a[1],a[2] 都是 int 类型,且空间是连续的,所以 a[1] 的地址为 a[0] 的地址加 4 bytes。形式化的讲:设一个数组的首地址为 address,数据类型的占用空间为 M byte,则该数组的第 k 个元素的地址为:address+(k-1)*M。
【输入格式】
输入两行
第一行一个字符串,表示一维数组定义,其格式为“数据类型 数组名[数组大小];”,数据类型保证在预设中,不存在其他情况,无需考虑内存问题,即无需考虑数组大小n是否过大。
第二行2个以空格隔开的整数address与k,分别表示10进制的数组首地址,以及求数组中第k个元素的地址(注意是第k个,不是下标为k)。
【输出格式】
输出一个10进制表示的整数,表示想要知道数组中第几个元素的地址。
【输入输出样例】
double a[10];
100000 5
100032
【样例1解释】double占用8bytes,所以第5个元素的地址为:100000+(5-1)*8=100032。
【数据范围】
对于80%的数据,0<address,n≤32767。
对于100%的数据,0<address≤2147483647,1≤k≤n≤2147483647。