阵列值是什么?

时间:2014-03-31 18:47:54

标签: arrays

家庭作业问题:

  

给定数组double x [3],x的“值”是多少?提供一个   可能的价值。鉴于前一点的v的值,是什么   地址x [0],x [1]和x [2]。

个人考虑因素:

在我看来,数组的值是它的项集合。例如。

  

double x [3] = {8,9,88};

但问题会让我觉得'value'是指数组的机器起始地址(数组的内存块的基地址)。

我的理由是正确的吗?你能给你的答案是什么?

2 个答案:

答案 0 :(得分:1)

没有你的推理不正确。 x的值只是一个地址 - 数组中第一个元素的地址。至于x[0]x[1]x[2]的地址分别是x+0(或简称为x),x + sizeof(double)和{{ 1}}。

编辑:正如Joachim Isaksson所指出的那样,x和裸指针之间存在一些差异。例如,x + sizeof(double) * 2的大小是sizeof(x)中元素数量的两倍。

答案 1 :(得分:1)

x本身就是一个数组的左值,该数组在某个内存地址处包含三个双精度数。就是这样。

现在有很多情况会将这样的值转换为"指向double"的指针。指向该数组的第一个元素,但在其他情况下,这不会发生:当数组是sizeof的操作数时,& (地址)或_AlignOf运算符。

因此,如果有人说" x的值只是一个地址",那是错误的,因为sizeof(x)不是地址的大小,而是double的三倍。