Arrays 什么';数组值是多少?
作业问题: 给定数组双x[3],x的“值”是多少?提供 可能值。给定上一点的v值,是什么 x[0]、x[1]和x[2]的地址 个人考虑: 在我看来,数组的值是它的项集合。例如 双x[3]={8,9,88} 但这个问题会让我认为“value”是指数组的机器起始地址(内存块的数组基址)Arrays 什么';数组值是多少?,arrays,Arrays,作业问题: 给定数组双x[3],x的“值”是多少?提供 可能值。给定上一点的v值,是什么 x[0]、x[1]和x[2]的地址 个人考虑: 在我看来,数组的值是它的项集合。例如 双x[3]={8,9,88} 但这个问题会让我认为“value”是指数组的机器起始地址(内存块的数组基址) 我的推理正确吗?你会给你什么样的答案?不,你的推理是不正确的。x的值只是一个地址-数组中第一个元素的地址。至于x[0]、x[1]和x[2]的地址分别是x+0(或简称x)、x+sizeof(double)和x+size
我的推理正确吗?你会给你什么样的答案?不,你的推理是不正确的。
x
的值只是一个地址-数组中第一个元素的地址。至于x[0]
、x[1]
和x[2]
的地址分别是x+0
(或简称x
)、x+sizeof(double)
和x+sizeof(double)*2
编辑:正如约阿希姆·艾萨克森指出的,事实上,x和指向double的裸指针之间存在一些区别。例如,
sizeof(x)
是一个数组的大小,是x
中元素数的两倍。对于在某个内存地址包含三个双精度的数组,x本身是一个左值。就这样
现在有许多情况下,这样的值将转换为指向该数组的第一个元素的“指向double的指针”,但也有其他情况不会发生这种情况:当数组是sizeof、&(address)或_AlignOf运算符的操作数时
因此,如果有人说“x的值只是一个地址”,那就错了,因为sizeof(x)不是地址的大小,而是双精度的三倍 家庭作业问题:“请做你自己的家庭作业。我想在这里说,价值是指一个地址。这感觉像一个家庭作业问题。嗯
double x[3]
将sizeof(x)
设置为24,而不是指针通常设置的4或8。这意味着x包含的值是24字节。@JoachimIsaksson我不知道你在说什么。我的意思是我从不使用sizeof(x)
double*y;双x[3];std::cout@JoachimIsaksson我抓到你了对不起。您指的是第一句话,x只是一个指针。