Cのポインタについて(関数への値渡し)
C言語のポインタに関する質問です。関数に引数を渡す方法として以下の誤ったswap関数でなぜだめなのかいまいち得心できません。わかりやすくかみくだいて説明していただけると有り難いです。
できましたら、トレースともうしますか、変数の値の動きを詳細に段階的にプログラムの流れに沿って追っていって、だからこうなんだよ、みたいな解説がいただけたら有り難いです。わがままいってすみません。
/* 誤ったswap関数の宣言 */
void swap(int x, int y);
int main(void)
{
int num1 = 5;
int num2 = 10;
printf("変数num1の値は%dです。¥n", num1);
printf("変数num2の値は%dです。¥n", num2);
printf("変数num1とnum2の値を交換します。¥n", num1);
swap(num1, num2);
printf("変数num1の値は%dです。¥n", num1);
printf("変数num2の値は%dです。¥n", num2);
return 0;
}
/* 誤ったswap関数の定義 */
void swap(int x, int y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
}
----------
/* swap関数の宣言 */
void swap(int *pX, int *pY);
int main(void)
{
int num1 = 5;
int num2 = 10;
printf("変数num1の値は%dです。¥n", num1);
printf("変数num2の値は%dです。¥n", num2);
printf("変数num1とnum2の値を交換します。¥n", num1);
swap(&num1, &num2);
printf("変数num1の値は%dです。¥n", num1);
printf("変数num2の値は%dです。¥n", num2);
return 0;
}
/* swap関数の定義 */
void swap(int *pX, int *pY)
{
int tmp;
tmp = *pX;
*pX = *pY;
*pY = tmp;
}
お礼
ありがとうございます!