Call by Referance란? 전달인자에 별명을 붙여줌.

ex)  void main()
{
   int name=10;
   int &nick= name;
}

※swap함수를 부를때 별명으로 &imsi_x, &imsi_y를 만듦.


#include<stdio.h>
void swap(int &imsi_x, &imsi_y);

void main()
{
   int x=10, y=20;
   printf("함수 호출전 x=%d y=%d",x,y);
   swap(x,y);
   printf("함수호출후 x=%d y=%d",x,y);
}

void swap(int &imsi_x, int &imsi_y)
{
   int temp=0;
   temp = imsi_x;
   imsi_x = imsi_y;
   imsi_y = temp;
   printf("함수안의 imsi_x = %d imsi_y = %d",imsi_x,imsi_y);
}

첫번째 main x=10, y=20
두번째 swap x=20, y=10
세번째 main x=20, y=10

'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

구조체와 배열  (0) 2011.08.17
구조체  (0) 2011.08.17
Call by Address  (0) 2011.08.17
Call By Value  (0) 2011.08.17
다중포인터  (0) 2011.08.17

Call by Address란? 주소를 넘겨주는 방식


#include<stdio.h>
void swap(int *imsi_x, int *imsi_y);
int main()
{
   int x=10, y=20;
   printf("함수호출전 x= %d y=%d",x,y);
   swap(&x,&y);
   printf("함수호출후  x=%d y=%d",x,y);
}

void swap(int *imsi_x, int imsi_y)
{
   int temp=0;
   temp= *imsi_x;
   *imsi_x = *imsi_y;
   *imsi_y = temp;
   printf("swap 함수안 imsi_x=%d , imsi_y=%d",imsi_x,imsi_y);
}


첫번째 main  x=10, y=20
두번째 swap x=20, y=10
세번째 main x=20, y=10


*주소를 직접참조하여 값이 변경가능

'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

구조체  (0) 2011.08.17
Call by Referance  (0) 2011.08.17
Call By Value  (0) 2011.08.17
다중포인터  (0) 2011.08.17
다차원 배열(이차원배열)  (0) 2011.08.16

Call By Value 란? 함수에 값을 넘겨줌(복사값을 전달함으로 원본값이 변하지않음)
                              단점: 값을 넘겨줄때마다 고비용. 복사손실 단점


#include<stdio.h>
void swap(int imsi_x, int imsi_y);
void main()
{
   int x=10, y=20;
   printf("함수호출전 x= %d, y=%d", x,y);

   swap(x,y);

   printf("함수호출후 x=%d, y=%d, x,y);
}

void swap(int imsi_x, int imsi_y)
{
   int  temp =0;
   temp = imsi_x;
   imsi_x = imsi_y;
   imsi_y= temp;
  
   printf("swap 함수안의  imsi_x = %d, imsi_y= %d", imsi_x,imsi_y);
}


첫번째 main 함수출력값:   10,20
두번째 swap 함수출력값:   20,10
세번째 main 함수출력값:   10,20

*swap 함수가 실행될때 main함수에선 10과 20이라는 값이 복사되어 넘어감
 swap함수가 끝나고 main함수로 돌아왔을때 값이 바뀌지 않음.


'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

Call by Referance  (0) 2011.08.17
Call by Address  (0) 2011.08.17
다중포인터  (0) 2011.08.17
다차원 배열(이차원배열)  (0) 2011.08.16
배열 and 포인터  (0) 2011.08.16