*p++ = *q++; の動作を見る為に、次のようなコードをかいてみました。
c++
1#include <iostream>
2using namespace std;
3
4int main() {
5 int *p;
6 int *q;
7
8 int ary_a[] = {1, 2, 3};
9 int ary_b[] = {10, 20, 30};
10
11 p = ary_a, q = ary_b;
12
13 *p++ = *q++;
14
15 for (int i = 0; i < 3; i++) {
16 cout << ary_a[i] << ", ";
17 }
18 cout << endl;
19
20 for (int i = 0; i < 3; i++) {
21 cout << ary_b[i] << ", ";
22 }
23 cout << endl;
24
25 cout << "*p =" << *p << endl;
26 cout << "*q =" << *q << endl;
27}
実行結果
$ ./a.out
10, 2, 3,
10, 20, 30,
*p =2
*q =20
*p++ = *q++;
の実行後は次のようになっていることがわかります。
p は &ary_a[0] -> &ary_a[1] に変化した。
q は &ary_b[0] -> &ary_b[1] に変化した。
ary_a[0] は ary_b[0] の値と同じになった。
*p++ = *q++; という書き方は、配列のコピーをするときに使われることがあります。
p = ary_a, q = ary_b;
for (i = 0; i < 3; i++) {
*p++ = *q++;
}
↑の例では、 ary_b の先頭の3要素が ary_a の先頭の3要素と同じになります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。