正如标题所说,我需要修改通过引用传递的数组的第 i
th 元素...
我有以下情况:
function1(Node *&array, int i) {
array = array +i; // crash!!!
// operation on array[i]
}
function2() {
Node** array;
// filling the array bla bla bla
function1(*(array+0), i);
}
问题是:当我写array = array +i;
时我做错了什么???
提前谢谢您!
最佳答案
我认为您的function1
设计不正确。我不会尝试传递索引,而是简单地传递第 i 个元素。
function1(Node* array) {
array->foo = ....
}
并这样调用它:
function1(array[i]);
您确实应该改掉使用 +
运算符作为数组索引方法的习惯。使用索引 []
语法。我知道它们可以互换,但索引语法传达了意图。
在评论中,您指出索引实际上仅在 function1
内部已知,并且实际上不是问题中所述的参数。在这种情况下,将 Node**
传递给 function1
。
带有引用参数的代码会修改 array[0]
,因为这是您传入的 Node*
引用。但是您想要修改 i
第一个节点。如果您传递对 Node*
的引用,那么您只能修改该一个对象。为了执行您需要的操作,您需要传递 Node**
。
关于c++ - 通过引用传递参数的指针算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271613/