将整数数组插入指针数组



有人能告诉我这是如何编译的吗。如何将整数数组元素分配给指针数组元素?奇怪的是,输出表明nums[i]是一个整数而不是指针,然而nums被定义为指针。

#include <iostream>
int main() {
int n;
int *nums = NULL;
nums = new int[n];  // Assign pointer nums to a address in heap allocated for a integer array of n-elements.
n=5;
int Array[n] = {5,4,3,6,8};

for(int i=0; i<n; i++) 
{
nums [i] = Array[i];
std::cout << nums[i] << " , " << &nums[i] << std::endl;
}
delete []nums;
return 0;}

我得到以下输出:

5 , 0x786cd0
4 , 0x786cd4
3 , 0x786cd8
6 , 0x786cdc
8 , 0x786ce0

感谢的帮助

如何将整数数组元素分配给指针数组元素?

nums是指向int元素的动态数组的指针,在本例中指向数组中的第一个int。对nums[i]进行去引用产生对阵列中第i个元素的int&引用。

CCD_ 7是CCD_ 8元素的固定阵列。当固定数组按其名称访问时,它衰减为指向第一个元素的指针。因此,解引用Array[i]也会产生对数组中第i个元素的int&引用。

因此,nums[i] = Array[i];只是将int分配给int。这没什么奇怪的。

输出表明nums[i]是一个整数,而不是指针

没错。

然而nums被定义为指针

这也是正确的。它是指向int的指针,在这种情况下是动态数组中的第一个int


此外,附带说明的是,您的代码有未定义的行为,因为n在用于分配nums时未初始化,而int Array[n]是非标准行为,因为n不是编译时常数。

最新更新