有人能告诉我这是如何编译的吗。如何将整数数组元素分配给指针数组元素?奇怪的是,输出表明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
不是编译时常数。