Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中的数组赋值 P>数组中的C++标识符是指针,数组中的java标识符是引用变量,实际上是指针。_Java_C++_Arrays_Pointers - Fatal编程技术网

C++中的数组赋值 P>数组中的C++标识符是指针,数组中的java标识符是引用变量,实际上是指针。

C++中的数组赋值 P>数组中的C++标识符是指针,数组中的java标识符是引用变量,实际上是指针。,java,c++,arrays,pointers,Java,C++,Arrays,Pointers,假设有一个数组a和b。java中如何允许此操作: a = b; //the reference that 'b' holds will be copied to 'a' so both a and b point to the same array 但是在C++中,相同的操作将被认为是无效的赋值。< /P> 如果A和B都是C++中的指针,为什么B的位置不能复制到A?数组引用是指针,但在java中它们既不是指针也不是隐含的常数。它们只是降级为指向它们所包含的第一个元素的指针。它们实际上是一堆数据

假设有一个数组a和b。java中如何允许此操作:

a = b; //the reference that 'b' holds will be copied to 'a' so both a and b point to the same array
<>但是在C++中,相同的操作将被认为是无效的赋值。< /P>

如果A和B都是C++中的指针,为什么B的位置不能复制到A?<在C++中,数组引用是指针,但在java中它们既不是指针也不是隐含的常数。C++中的

< p>数组引用是指针,但在java中它们既不是指针也不是隐含的常数。它们只是降级为指向它们所包含的第一个元素的指针。它们实际上是一堆数据。不能在C++中改变数组的位置,因为内存中没有指针存放的位置;它只是结构或堆栈帧的偏移量。

数组不是真正的指针,它们只是降级为指向它们所包含的第一个元素的指针。它们实际上是一堆数据。不能在C++中改变数组的位置,因为内存中没有指针存放的位置;它只是结构或堆栈帧的偏移量。

您的第一条语句不正确。这会影响接下来的事情。C++数组不是指针。不过,语言可以支持数组赋值,所以一般问题是好的。它们是不同的语言,所以它们的行为不同。C++的标识符是一个指针。这是不正确的。在许多情况下,它们会退化为指针。这是来自C语言。@ DeuloLi我知道,但它应该是SENSE。如果标识符是指针,它们应该像C++中的一个一样,数组不是指针。如果你像传递函数一样传递它,它会衰减为指针。你的第一条语句是错误的。这会影响接下来的事情。C++数组不是指针。不过,语言可以支持数组赋值,所以一般问题是好的。它们是不同的语言,所以它们的行为不同。C++的标识符是一个指针。这是不正确的。在许多情况下,它们会退化为指针。这是来自C语言。@ DeuloLi我知道,但它应该是SENSE。如果标识符是指针,它们应该像C++中的一个一样,数组不是指针。如果你像传递函数一样传递它,它就会衰减为指针。但是你可以有一个赋值操作符,它可以将一个数组的元素复制到另一个数组中,而不必调用,比如说,std::copy。但在我看来,这是不直观的,因为数组会退化为指针,它们与其他C设计(如结构)不正交。如果您想要类似C++的行为,我建议您尝试std::array—唯一的缺点是多维语法很糟糕。显然,这个问题有一个C++11解决方案。我同意。这是因为数组在C语言中的行为方式很特殊,所以用赋值等扩展它们的接口会让人困惑。这可能是原因之一。但是你可以用赋值操作符将一个数组的contant复制到另一个数组中,而不必调用,比如说std::copy。但我认为这是不直观的,由于数组降级为指针,它们与其他C设计(如结构)不正交。如果您想要类似C++的行为,我建议您尝试std::array—唯一的缺点是多维语法很糟糕。显然,这个问题有一个C++11解决方案。我同意。这是因为数组在C语言中表现出一种特殊的方式,用赋值等扩展它们的接口会让人感到困惑。这可能是原因之一。@T.J.Crowder是的,我希望现在的答案看起来更好。嗯,…是隐式常量指针。。。这是不正确的。数组是C++中自己的事情。正如juanchopanza指出的,在许多情况下,它们降级为指向数组第一个元素的指针,但这不是一回事。@T.J.Crowder是的,我希望现在的答案看起来更好。嗯,…是隐式常量指针。。。这是不正确的。数组是C++中自己的事情。正如juanchopanza指出的,在许多情况下,它们降级为指向数组第一个元素的指针,但这不是一回事。