首页 > 解决方案 > 无法创建整数指针的副本。它始终是一个参考

问题描述

正如问题所暗示的那样,我无法复制int* cells变量。

我努力了:

int * newCells = *cells // this a compile error

我努力了:

memcpy()

这仍然使它成为参考

int* cellCompete(int* cells, int days)
{
    // WRITE YOUR CODE HERE
    
    //make a copy of the cells
    int* newCells = cells;
    newCells[0] = 29;
    cout << "TEST: " << newCells[0] << endl;
    cout << "TEST 2: " << cells[0] << endl;

 }

这将打印出:

TEST: 29
TEST 2: 29

标签: c++pointers

解决方案


正如问题所暗示的那样,我无法复制 int* 单元格变量。

你可以,而且你确实复制了int* cells变量。

变量是一个指针。当你复制一个指针时,你会得到另一个指针,它指向与原始指针相同的对象。由于两个指针变量都指向同一个对象,因此当通过另一个指针观察到同一个对象时,将看到通过一个指针修改该对象。

如果要复制指向的对象,则需要通过指针间接。

int * newCells = *cells

这是正确的方向。但是指向整数的指针指向的对象不是指向整数的指针。整数指针指向的对象是整数。因此,您必须更改要保存该整数副本的变量的类型:

int newCells = *cells;

推荐阅读