c++ - 无法创建整数指针的副本。它始终是一个参考
问题描述
正如问题所暗示的那样,我无法复制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
解决方案
正如问题所暗示的那样,我无法复制 int* 单元格变量。
你可以,而且你确实复制了int* cells
变量。
变量是一个指针。当你复制一个指针时,你会得到另一个指针,它指向与原始指针相同的对象。由于两个指针变量都指向同一个对象,因此当通过另一个指针观察到同一个对象时,将看到通过一个指针修改该对象。
如果要复制指向的对象,则需要通过指针间接。
int * newCells = *cells
这是正确的方向。但是指向整数的指针指向的对象不是指向整数的指针。整数指针指向的对象是整数。因此,您必须更改要保存该整数副本的变量的类型:
int newCells = *cells;
推荐阅读
- apollo - Next.JS + Apollo Server(bodyParser 问题)
- iphone - Flutter Xcode:致命错误:找不到模块“admob_flutter”@import admob_flutter;
- python - 查找每个客户最近的两次付款,然后找出两者之间的差异
- matlab - 如何针对具有已知导数的符号函数绘制图形
- forms - 如何从 EntityType 类中以形式返回实体对象类型?
- javascript - Javascript 对数组中的特定对象求和(游戏配对引擎优化)
- javascript - 输入类型范围在html中的输入类型编号中显示范围值
- r - R:创建添加水年列的函数
- python - Matplotlib 图形大小随着添加标签而增加?
- flutter - 2秒后更新标记位置