포인터를 배우면 가장 먼저 작성하는 함수 중 하나인 스왑함수 swap

#include<stdio.h>

void	swap(int *a, int *b)
{
	int		tmp;

	tmp = *a;
	*a = *b;
	*b = tmp;
}
int main(void){
  int a=5,b=7;
  printf("before\t a :%d b:%d\n",a,b);
  swap(&a,&b);
  printf("after\t a :%d b:%d",a,b);
}

포인터로 주소를 넘긴다. 

swap(&a,&b) ; 주소를 넘기기 때문에 swap 함수에서 main 함수로 영향을 줄 수 있다. 자동 변수의 한계를 넘는다. 스택에 함수가 있어도 값을 변경할 수 있다. 서로 다른 함수에 있는 자동 변수들은 함수가 사라지면 값도 사라진다. 하지만 포인터 문법을 사용하면 그 한계를 넘을 수 있다. 주소값을 주기 때문에 주소에 해당하는 값을 직접 접근하여 수정할 수 있다. 이것이 바로 포인터다.

아래는 스왑함수 활용 후 표준 출력한 결과 화면이다.

swap 함수 출력 결과

 

Posted by 뭔가느낌이
,