9. ポインタの例:スワップ
swap1(int a , int b) int hoge = 5;
{ int piyo = 10;
int tmp = b;
b = a; swap1(hoge,piyo);
a = tmp; //結果?
}
swap2(&hoge,&piyo);
swap2(int *a , int *b) //結果?
{
int tmp = *b;
*b = a;
*a = tmp;
}
10. スワップ
swap1(int a , int b) アドレス メモリの内容
{ 0x00000000 5
int tmp = b; 0x00000001 (hoge)
0x00000002
b = a;
0x00000003
a = tmp; 0x00000004 10
} 0x00000005 (piyo)
... 0x00000006
0x00000007
int hoge = 5; 0x00000008
int piyo = 10;//←今ココ 0x00000009
0x0000000A
0x0000000B
swap1(hoge,piyo); 0x0000000C
printf( 0x0000000D
“%d,%d”,hoge,piyo); 0x0000000E
0x0000000F
11. スワップ
swap1(int a , int b)//←今ココ アドレス メモリの内容
{ 0x00000000 5
int tmp = b; 0x00000001 (hoge)
b = a; 0x00000002
a = tmp; 0x00000003
} 0x00000004 10
0x00000005 (piyo)
... 0x00000006
0x00000007
int hoge = 5; 0x00000008 5
int piyo = 10; 0x00000009 (a)
0x0000000A
swap1(hoge,piyo);//←ココの 0x0000000B
printf(“%d,%d”,hoge,piyo);
0x0000000C 10
0x0000000D (b)
0x0000000E
0x0000000F
12. スワップ
swap1(int a , int b) アドレス メモリの内容
{ 0x00000000 5
int tmp = b; 0x00000001 (hoge)
b = a; 0x00000002
a = tmp;//←今ココ 0x00000003
} 0x00000004 10
0x00000005 (piyo)
... 0x00000006
0x00000007
0x00000008 10
int hoge = 5;
0x00000009 (a)
int piyo = 10;
0x0000000A
swap1(hoge,piyo);//←ココの 0x0000000B
printf(“%d,%d”,hoge,piyo); 0x0000000C 5
0x0000000D (b)
0x0000000E
0x0000000F
13. スワップ
swap1(int a , int b) アドレス メモリの内容
{ 0x00000000 5
int tmp = b; 0x00000001 (hoge)
b = a; 0x00000002
0x00000003
a = tmp;
0x00000004 10
}
0x00000005 (piyo)
... 0x00000006
0x00000007
int hoge = 5; 0x00000008
int piyo = 10; 0x00000009
0x0000000A
swap1(hoge,piyo); 0x0000000B
printf( 0x0000000C
“%d,%d”,hoge,piyo); 0x0000000D
//↑今ココ 0x0000000E
0x0000000F