【问题标题】:How to assign elements of array to a pointer pointing to an allocated array如何将数组元素分配给指向已分配数组的指针
【发布时间】:2020-03-07 04:57:35
【问题描述】:
#include <iostream>
int main() {
    int arr[3] = {10, 11, 12};
    int *p_arr = new int[3];
    *p_arr = *arr;  // This is how I assign, does not work
    std::cout << *(p_arr+1);  // Not results 11
}

我想避免指向静态数组的指针,所以我会将静态数组元素分配或复制到新分配的数组。有没有办法直接做到这一点而无需迭代分配?

【问题讨论】:

  • 您的 C++ 书籍对此有何评论?
  • 我不知道。我没有使用参考书目。主要是我在网上自学。我现在正在做自己的项目。
  • “我想避免指向数组。” -- 这是什么意思?
  • p_array = arr 我想
  • @NabilAsykar 您希望p_arr 包含arr 的内容,但您不想调用std::copy 来实现这一目标?这是你的问题吗?

标签: c++ arrays pointers


【解决方案1】:

其实评论里有人nick帮我回答了。 std::copy 可能是答案。尽管它仍然使用迭代方式,但最好还是使用它而不是创建代码。

#include <iostream>

int main() {
    int arr[3] = {0, 1, 2};
    int *p_arr = new int[3];
    int length = sizeof(arr)/sizeof(int);
    std::copy(arr+0, arr+length, p_arr+0);  // Copy elements
    cout << sizeof(arr[0])/sizeof(int) << endl << *(p_arr+2);
}

【讨论】:

  • 使用向量代替:3
  • 从技术上讲,这并不能回答问题。问题说明“没有迭代地分配它”,并且std::copy 迭代地分配元素。请尝试在问题中说出您的意思,否则您会错过可能的答案。
猜你喜欢
  • 2011-04-02
  • 2021-07-23
  • 2014-11-23
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多