혹시 질문이나 답변 잘해주는 C/C++ 사이트 아시는 분 답변 좀 부탁드립니다.

제가 아는 사이트들은 답변 속도가 느리거나 답변 같은 것보다는 자료 중심이라서...

이거 공부하다 보면 의문 투성인 것들이 나오게 되네요.

이 곳에서 계속 물어보는 것도 좀 뻘쭘하고...

int main()
{
      int a, b, c;

      a=5;
      b=2;
      c=a;
      a=b;
          b=c;
      printf("%d %dn", b, a);
      return 0;
}

실행 결과 5 2

#include <stdio.h>

void goodswap(int* a, int* b);
void badswap(int a, int b);

int main(int argc, char* argv[])
{
        int a, b;

        a=123;
        b=456;
        printf("교환전 : a = %d, b=%dn", a, b);

        goodswap(&a, &b);
        printf("교환후 : a=%d, b=%dn", a, b);

        a=123;
        b=456;
        printf("교환전 : a = %d, b=%dn", a, b);

        badswap(a, b);
        printf("교환후 : a= %d, b=%dn", a, b);

        return 0;
}

void goodswap(int* a, int* b)
{
        int tmp;
        
        tmp= *a;
        *a=*b;
        *b=tmp;

        return;
}

void badswap(int a, int b)
{
        int tmp;

        tmp=a;
        a=b;
        b=tmp;

        return;
}

이건 실행 해 보면  교환 전 a=123, b=456 교환 후 a=456, b=123
                          교환 전 a=123, b=456 교환 후 a=123, b=456
이란 결과가 나오는데 이 예제를 실어준 책의 설명에 의하면 함수로 전달하여 변수의 값을 교환하기 위해서는 변수에 대입되있는 값이
아닌 변수의 주소를 알려줘야 한다고 하는데, 위에 처음 것과 같이 생각해 볼때 왜 변수의 주소가 필요한지 모르겠네요... 아시는 분 답변 좀 부탁드립니다.