#include<stdio.h> #include<iostream> using namespace std; #define FOR(i,a,b) for(int i=(a);i<(b);++i) void printArray(int *A, int n){ FOR(i, 0, n){ cout << A[i] << " "; } cout << endl; } int main(){ int A[] = {1,2,3}; printArray(A, 3); for(int v : A){ v = 0; } printArray(A, 3); for(int& v : A){ v = 0; } printArray(A, 3); return 0; }
$ g++ experiment.cpp && ./a.out 1 2 3 1 2 3 0 0 0
- for(auto a : A) この書き方
- 参照渡しにするなら for(auto& a : A) こう書く。こう書かないと変更は反映されない
- 逆に、書き換えないときは & を付けない方がいい