プログラミング言語 C

C では 関数に対して 引数を 値で渡すから、呼ばれた関数のほうで 呼び出した関数内の変数を 直接 変更することはできない。
(このとき) ポインタ変数を使えば、関数の中で それを呼んだ関数中の オブジェクトにアクセスして (間接的に) 変更することが 可能となる。

  1. /* swap_2.c */
  2. #include
  3. void swap(int *x, int *y);
  4. main()
  5. {
  6. int a = 3, b = 5;
  7. printf("a = %d, b = %d\n", a, b);
  8. swap(&a, &b);
  9. printf("swap a = %d, b = %d\n, a, b);
  10. return 0;
  11. }
  12. void swap(int *px, int *py)
  13. {
  14. int tmp;
  15. tmp = *px;
  16. *px = *py;
  17. *py = tmp;
  18. }

演算子 & は 変数のアドレスを与えるから、&a は a へのポインタである。
関数 swap() 内では 引数は ポインタとして 宣言されており、実際の被演算数は ポインタを通して 間接的にアクセスされる。(P116-117)