컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post C언어] 별표(*) 기호 의미, 뜻; Asterisk Pointer OperatorC언어] printf 함수에서 %p 의미. 변수 번지, 포인터 변수 주소 출력; Print...PHP 예제] 상수 정의 / 선언 방법; Define ConstantPHP 예제] 모든 상수 목록 출력 함수; Dump All Constant Function...PHP 예제] 배열 출력; 구성 요소를 브라우저에 간단히 프린트하기; Print Array...PHP 5] 운영체제에 맞게 개행문자 출력 상수; 자동 CRLF 줄바꿈; DOS Windo...PHP 예제] 배열 출력 함수, 구성 요소 화면에 프린트; Print Echo ArrayPHP 예제] 배열 크기, 사이즈 구하기 함수, 배열 요소 개수; Array Size Fu...PHP, Perl/펄] 큰따옴표/작은따옴표 출력. 쌍따옴표 홑따옴표 Print; echo ...PHP, Perl/펄] 큰따옴표 작은따옴표 차이점, 쌍따옴표/홑따옴표 차이; Double-...

C언어] 변수 값 서로 교환, 스왑 함수; Swap Function

Friday, May 04, 2007

두 변수의 값을 서로 교환하여 바꾸는 함수 예제입니다. 예를 들어

x = 20
y = 70

일 때

x = 70
y = 20

이렇게 변경하는 것입니다. 그냥 보통의 방법으로는 swap 함수를 만들 수 없기에, 포인터를 사용합니다.

변수의 주소를 함수의 인수로 전달해야 합니다. 단순히 값을 전달하면 함수 밖의 원래의 변수의 값이 변경되지 않습니다.

변수 값 바꾸기 예제


소스 파일명: example.cpp
#include <stdio.h>

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


int main(void) {
  int i = 300;
  int j = 500;

  printf("i = %d\n", i);
  printf("j = %d\n", j);
  // i = 300
  // j = 500


  // 변수 i, j 의 주소를 "주소 연산자 (&)" 를 이용하여 swap 함수로 전달
  // i, j 가 포인터 변수가 아니기에, &를 붙여야 주소를 알 수 있음
  swap(&i, &j);

  printf("i = %d\n", i);
  printf("j = %d\n", j);
  // i = 500
  // j = 300
  // 두 변수의 값이 교환되었습니다.

  return 0;
}


// 변수의 값이 아닌, 변수의 주소를 요구하는 함수임
void swap(int* a, int* b) { // 여기의 별표는, 포인터 변수라는 뜻
  int temp = *a; // a가 가리키는 곳의 값(300)을 temp에 대입
  *a = *b; // *a 등에 붙은 별표는, 포인터 변수가 가리키는 값을 의미함
  *b = temp;
}





이것은 일반 변수의 주소를, 포인터 변수에 대입한 후, 그 포인터 변수를 스왑함수에 넣었습니다. 결과는 위의 소스와 같습니다.
#include <stdio.h>

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


int main(void) {
  int i = 300;
  int j = 500;

  int* ip = &i; // i의 주소(&i)를, 포인터 변수 ip 에 대입
  int* jp = &j; // j의 주소(&j)를, 포인터 변수 jp 에 대입


  printf("i = %d\n", i);
  printf("j = %d\n", j);
  // i = 300
  // j = 500


  // i, j의 주소가 들어 있는, 포인터 변수 ip, jp 를 입력
  swap(ip, jp);


  printf("i = %d\n", i);
  printf("j = %d\n", j);
  // i = 500
  // j = 300
  // 두 변수의 값이 교환되었습니다.

  return 0;
}




void swap(int* a, int* b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}



C++ 에서: ▶▶ C++, 두 변수의 값 교환 함수 swap(); 참조에 의한 호출(Call by Reference)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top