存储地址

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

存储地址

【题目描述】

程序设计中常遇到大批量数据,需要使用到数组、链表等数据结构来保存数据。每种数据结构都具有自己的特性,如数组:其开辟的空间是连续的,具有良好的随机访问特性,可以通过[]对存储地址的计算来访问数据。现有如下的预设,结合题目模拟[]的计算过程。

数据类型 占用空间 数据类型 占用空间 数据类型 占用空间 数据类型 占用空间
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。

2024级计算机程序设计基础-语法赛

未参加
状态
已结束
规则
IOI
题目
15
开始于
2024-12-7 9:00
结束于
2024-12-8 9:00
持续时间
5 小时
主持人
参赛人数
143