如何修改函数中数组的值,然后在调用函数的地方使用“新”数组

时间:2018-11-08 21:42:21

标签: c++ arrays pointers reference

因此,对于我的家庭作业,我需要制作yahtzee风格的文字游戏。目前,我正在一个数组中保存骰子值。我的问题是能够将数组传递给函数以修改值,然后再次使用该修改后的数组。最初,我想使用引用或指针来实现。用这种方式我遇到了问题,而且我一直无法获得任何一种编译方式。今天,我与老师交谈,老师告诉我可以正常地在函数内部修改数组,然后再次使用数组,本质上说它们是通过引用自动传递的。

有人可以澄清一下我老师的意思以及它是否正确。另外,你们会推荐什么方法。以下是我当前的尝试使用引用的实现

function createObj() {
  this.name = 'user';
  this.prezime = 'user';
}

var obj1 = new createObj();

createObj.prototype.__proto__.toString = function() {
  return 'works';
} //obj1.toString() returns 'works'   

console.log(obj1.toString());

createObj.__proto__.__proto__.toString = function() {
  return 'this works as well';
}

console.log(obj1.toString());

Object.prototype.toString = function() {
  return true;
}

console.log(obj1.toString())

此刻,我收到编译器错误提示

  

错误:与“ operator []”不匹配(操作数类型为“ Player”,   “ int”)       p [i] .scoreBoard = updateScore(p [i],dice);

随后的尝试中,我尝试使用p [i]

2 个答案:

答案 0 :(得分:1)

您的老师的意思是您可以将数组作为指针传递给另一个函数,并使用它来修改另一个函数中数组的值。使用以下示例在修改数组之前和修改数组之后检查打印的值。注意如何将数组从主函数传递到ModifyArray函数。

from ... import *

答案 1 :(得分:0)

您的老师的意思是,如果您有一个带有缓冲区整数的指针,并且该指针始终包含值。

例如:

int* p = new int[5];

这将创建一个具有5个插槽的数组,每次填充它时,它总是会改变,如果您面向对象,有些事情可能会有所不同,但大多数情况是这样。您可以将is用作测试的全局变量。

您可以通过写p [您想要的插槽号]来解决它。这种方法使您可以使用数组,另一种方法是返回带有数字的数组(而不是具有空值)。