ipwn

C) swap 함수 구현 본문

Programming

C) swap 함수 구현

ipwn 2017. 12. 18. 23:18

포인터로 swap함수 구현​ 


​포인터로 스왑 함수를 구현하라면 아래와 같이 구현 할 수 있는데요,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
void swap(int *n1, int *n2) {
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}
void swap2(int n1, int n2) {
    int temp; 
    temp = n1;
    n1 = n2;
    n2 = temp;
}
int main() {
    int a = 7, b = 9;
    printf("a=%d b=%d\n", a, b);
    swap2(a, b);
    printf("a=%d b=%d\n", a, b);
    swap(&a, &b);
    printf("a=%d b=%d\n", a, b);
        return 0;
}
cs

​ 

위 코드를 실행하면 아래와 같습니다.


위 실행 결과를 보면 swap 함수는 제대로 실행 되어서 두 숫자를 바꿔준 반면에


swap2  함수는 두 숫자를 바꿔주지 못한 걸 알 수 있는데요,


그 이유는 swap 함수는 각 메모리의 주솟값을 받아와서 그 주소안의 값을 바꿔준 것이지만


swap2 함수는 그냥 a=7, b=9의 메모리값들만 즉 7, 9라는 값만 가져와서 


위의 swap2 함수안에서의 매개변수 n1, n2 값의 위치만 바꿔준 것이기 떄문에


정작 a,b의 주소값 안에 들어있는 메모리 값들은 아무런 영향이 없어서 


바뀌지않고 그대로 남아있게 된 것입니다.

'Programming' 카테고리의 다른 글

C) 포인터, 문자와 문자열 처리 함수, 구조체  (0) 2017.12.27
C) 코드업 함수문제 풀이  (0) 2017.12.18
C) 포인터  (0) 2017.12.18
C) strlen, strcmp, strcpy 함수 조사 및 구현  (0) 2017.12.18
C) 함수란 ?  (0) 2017.12.18
Comments