配列要素を変更しようとしていると仮定すると、変更する配列要素へのポインターまたは参照を渡すだけで済みます。
例1:操作する要素への参照を渡します。
function1(Node &element) {
// operation on element
}
function2() {
Node** array;
// filling the array bla bla bla
function1(array[0][i]);
}
例2:操作する要素へのポインターを渡します。
function1(Node *element) {
// operation on *element
}
function2() {
Node** array;
// filling the array bla bla bla
function1(*array + i);
}
例3:要素の配列とインデックスへのポインタを渡します。
function1(Node *array, int i) {
Node *element = array + i;
// operation on *element
}
function2() {
Node** array;
// filling the array bla bla bla
function1(*array, i);
}
例4:例3と同じですが、ローカル参照を使用します。
function1(Node *array, int i) {
Node &element = array[i];
// operation on element
}
function2() {
Node** array;
// filling the array bla bla bla
function1(*array, i);
}
例5:例3と同じですが、パラメーターをローカル変数として再利用します。これは、配列が参照ではないためにのみ機能することに注意してください。おそらくこのスタイルは避けるべきです。
function1(Node *array, int i) {
array += i;
// operation on *array
}
function2() {
Node** array;
// filling the array bla bla bla
function1(*array, i);
}