プログラミング言語 C
C では 関数に対して 引数を 値で渡すから、呼ばれた関数のほうで 呼び出した関数内の変数を 直接 変更することはできない。
(このとき) ポインタ変数を使えば、関数の中で それを呼んだ関数中の オブジェクトにアクセスして (間接的に) 変更することが 可能となる。
- /* swap_2.c */
- #include
- void swap(int *x, int *y);
- main()
- {
- int a = 3, b = 5;
- printf("a = %d, b = %d\n", a, b);
- swap(&a, &b);
- printf("swap a = %d, b = %d\n, a, b);
- return 0;
- }
- void swap(int *px, int *py)
- {
- int tmp;
- tmp = *px;
- *px = *py;
- *py = tmp;
- }
演算子 & は 変数のアドレスを与えるから、&a は a へのポインタである。
関数 swap() 内では 引数は ポインタとして 宣言されており、実際の被演算数は ポインタを通して 間接的にアクセスされる。(P116-117)