家庭作业问题:
给定数组double x [3],x的“值”是多少?提供一个 可能的价值。鉴于前一点的v的值,是什么 地址x [0],x [1]和x [2]。
个人考虑因素:
在我看来,数组的值是它的项集合。例如。
double x [3] = {8,9,88};
但问题会让我觉得'value'是指数组的机器起始地址(数组的内存块的基地址)。
我的理由是正确的吗?你能给你的答案是什么?
答案 0 :(得分:1)
没有你的推理不正确。 x
的值只是一个地址 - 数组中第一个元素的地址。至于x[0]
,x[1]
和x[2]
的地址分别是x+0
(或简称为x
),x + sizeof(double)
和{{ 1}}。
x + sizeof(double) * 2
的大小是sizeof(x)
中元素数量的两倍。
答案 1 :(得分:1)
x本身就是一个数组的左值,该数组在某个内存地址处包含三个双精度数。就是这样。
现在有很多情况会将这样的值转换为"指向double"的指针。指向该数组的第一个元素,但在其他情况下,这不会发生:当数组是sizeof的操作数时,& (地址)或_AlignOf运算符。
因此,如果有人说" x的值只是一个地址",那是错误的,因为sizeof(x)不是地址的大小,而是double的三倍。