【问题标题】:Dereferencing pointers to make a copy of an array取消引用指针以制作数组的副本
【发布时间】:2019-02-13 22:29:55
【问题描述】:

我目前正在尝试将一个数组复制到另一个数组(具体为 200 - 299),同时取消引用指针。

*point = &array2[100]; //points to location 100 in array2, which holds numbers 100-300

我不能只使用一个for循环从指针开始的地方开始,然后将两个数组设置为彼此相等吗?

for(i = *point; i < 300; i++){
    array2 = array;
}

它说要取消引用我的指针,所以我会使用 *(point + a number) 之类的东西,但我不确定该怎么做。一个例子或一个例子的链接将不胜感激

【问题讨论】:

  • 代码一定要自己写吗? std::copy 将允许您将一个范围复制到另一个范围
  • @NathanOliver 是的,我必须自己编写代码,所以我不能使用 std::copy。我必须在取消引用我的指针时将 array2 复制到第一个数组,因此不允许使用 point[0]、point[1] 等
  • pointer[index] IS 取消引用pointer,它等同于*(pointer + index)
  • @RemyLebeau 对。我只是不知道如何使用它来复制数组

标签: c++ arrays pointers


【解决方案1】:

你想要这样的东西:

for (int *p = array1 + 200, *q = array2 + 200; p < array1 + 300; ++p, ++q)
{
    *q = *p;
}

【讨论】:

  • p 和 q 应该是新指针,还是 p 应该是我已经建立的指针?
  • 我也没有提到,但我将值 200 - 299 复制到第一个数组中
  • 是的,pq 是新指针。你可以随便给他们打电话。我将答案更新为仅复制最后 100 个元素。
  • 好吧,有道理。我正在运行代码,它给了我内存地址。如果我想打印出实际的数字,我会做类似 nums = *q 的事情,然后 cout
  • 是的,或者只是 cout &lt;&lt; *q; 在循环内部,即。
猜你喜欢
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 2019-10-10
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 2021-11-01
相关资源
最近更新 更多