달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

 

Temp를 사용한 일반적인 스왑 함수 대신에 다른 형태로 구현해 보았다.

결론부터 말하자면 최적화 측면에서 의미가 없다 (오히려 안 좋다).

일단 구현방법부터 살펴보자.

스왑함수에서 inum2의 값을 inum1으로 바꾼다 (*p2=n1).

Inum2의 기존 값은?? Inum2에서는 지워지지만, 이 것이 스왑함수의 매겨변수 n2에 들어있다.

따라서 이 n2의 값을 inum1에 넣어주면 된다. 다만 n2의 지역변수 이므로 swap의 반환형으로 전달하면 된다.

즉, n2의 값을 받은 swap의 반환형이 temp의 역할을 하는 셈이다.

얼핏 보면,

  1. 변수 하나를 덜 쓰는 것(temp) 처럼 보이지만, 인자가 하나 더 생겼으므로 (*p2) 사용하는 변수의 개수가 같다.
  2. 대입연산을 덜 하는 것 처럼 보이지만 오히려 더 한다.

    즉, Temp 초기화(선언 및 대입) 대신에 매개변수 p2초기화 (p2의 선언 및 &inum2를 대입)한다.

    또 이 p2의 값을 함수의 반환형에 대입 (int swap()=n2) 하므로 대입연산이 최소 4회 이루어진다.

     

 

이상으로 스왑함수의 다른 형태에 대해 알아보았다.

 

 

Posted by C언어 보이
|