algorithm 라이브러리에 swap 함수가 있지만,
실제 구현해보면 간단하며,
포인트에 대해 좀 더 이해할 수 있다.
//
// TEST.cpp
// studyC
//
// Created by salmon on 2020/07/11.
// Copyright © 2020 salmon. All rights reserved.
//
#include <stdio.h>
void test(int *a , int *b){
printf("swap 함수에서 초기 값 : %d %d\n", *a, *b);
printf("swap 함수에서 초기 주소 값 : %d %d\n\n", a, b);
int tmp = *b;
*b = *a;
*a = tmp;
// **실수한 내용
// a,b의 포인터의 값이 아닌, 변수 메모리 주소를 swap 하려했으나,
// 아래와 같이 진행하게 되면, (주소만 swap됨)
// 기존 : *a = &arr[0], *b = &arr[1] 에서
// *a = &arr[1], *b = &arr[0]
// 이 될 뿐 주소의 값은 swap 되지 않는다.
//int *tmp = b;
//b = a;
//a = tmp;
printf("swap 함수에서 처리 후 값 : %d %d\n", *a, *b);
printf("swap 함수에서 처리 후 주소 값 : %d %d\n\n", a, b);
}
int main(){
int arr[2] = {1,2};
printf("main 함수에서 초기 값 : %d %d\n", arr[0], arr[1]);
printf("main 함수에서 초기 주소 값 : %d %d\n\n", &arr[0], &arr[1]);
test(&arr[0],&arr[1]);
for(int i=0; i<2;i++){
printf("%d ",arr[i]);
}
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
[C/C++] 배열을 함수의 매개변수로 사용할때 주의점 (0) | 2020.07.09 |
---|---|
[C/C++] 변수 포인터 및 몇가지 테스트 (0) | 2020.07.09 |
[Visual Studio C++] scanf (_CRT_SECURE_NO_WARNINGS) 에러 해결 (0) | 2020.07.08 |
[알고리즘] C++ 자주 쓰는 STL 정리 (0) | 2020.07.07 |
[C++] 이클립스 C/C++ 연동하기 (0) | 2019.06.09 |