ipwn
C) swap 함수 구현 본문
포인터로 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