ポインタを使って複数の値を返す

  • こちらにポインタを使って2つの値を返している例がある
  • 拝借する
#include <stdio.h>

void foo(int i, int *m, int *d);

void foo(int i, int *m, int *d)
{
  *m = i%10;
  *d = i/10;
}

main()
{
  int i,j;
  
  foo(123,&i,&j);
  printf("%d , %d\n",i,j);
}
  • 結果
ryamada@CFS10 ~
$ gcc -o pointerpractice pointerpractice.c

ryamada@CFS10 ~
$ ./pointerpractice.exe
3 , 12

ryamada@CFS10 ~
    • 123を10で割った商がjに、あまりがiに入っている
    • foo()関数で二つのポインタにそれぞれ商とあまりのアドレスが与えられており、そのアドレスを持つ整数変数i,jがmain()関数の中でfoo()によって書き換えられているので、その値をmain()関数の中で呼び出せている