将整数数组插入指针数组?
Posted
技术标签:
【中文标题】将整数数组插入指针数组?【英文标题】:Inserting a Integer Array into a Pointer Array? 【发布时间】:2021-07-02 02:19:54 【问题描述】:谁能告诉我这是如何编译的。如何将整数数组元素分配给指针数组元素?奇怪的是,输出表明 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
是一个指针,nums[i]
取消引用索引 i 处的指针
这能回答你的问题吗? What does "dereferencing" a pointer mean?
【参考方案1】:
如何将整数数组元素分配给指针数组元素?
nums
是指向int
元素的动态数组的指针,在本例中指向数组中的第一个int
。取消引用nums[i]
会产生一个int&
对数组中i
th 元素的引用。
Array
是int
元素的固定数组。当通过名称访问固定数组时,它衰减为指向第一个元素的指针。因此,取消对 Array[i]
的引用也会产生一个 int&
对数组中第 i
th 元素的引用。
因此,nums[i] = Array[i];
只是将int
分配给int
。这没什么奇怪的。
输出表明
nums[i]
是一个整数而不是一个指针
没错,就是这样。
然而
nums
被定义为一个指针
这也是正确的。它是一个指向int
的指针,在本例中是动态数组中的第一个int
。
另外,附带说明一下,您的代码有未定义的行为,因为n
在用于分配nums
时未初始化,而int Array[n]
是non-standard behavior,因为n
不是一个编译时常量。
【讨论】:
我猜他们认为nums
会以某种方式成为一个指针数组。以上是关于将整数数组插入指针数组?的主要内容,如果未能解决你的问题,请参考以下文章