Dailelog
C_포인터_swap 본문
/* swap1.c */ /* 강의 주제 : swapping */ #include main() { int a = 10; int b = 20; int tmp; printf("before swapping: a = %d b = %d\n", a, b); tmp = a; a = b; b = tmp; /* //아래 방식으로 했을땐... a = b; b = a; */ printf("after swapping: a = %d b = %d\n", a, b); } |
결과는 다음과 같이 나온다.
before swapping: a = 10 b = 20
after swapping: a = 20 b = 10
#include void swap(int *a,int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; } main() { int a = 10; int b = 20; printf("before swapping : a = %d , b = %d \n", a,b) swap(&a,&b); //integer point type printf("after swapping : a = %d , b = %d \n", a,b); }#include void swap(int *a,int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; } main() { int a = 10; int b = 20; printf("before swapping : a = %d , b = %d \n", a,b) swap(&a,&b); //integer point type printf("after swapping : a = %d , b = %d \n", a,b); }#include void swap(int *a,int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; } main() { int a = 10; int b = 20; printf("before swapping : a = %d , b = %d \n", a,b) swap(&a,&b); //integer point type printf("after swapping : a = %d , b = %d \n", a,b); } |
만약 f(x,y,&z,&a,p) 라는 함수가 있다고 가정했을 때 actual parameter 중 x,y,p는 call by value(원래의 값?)이고, &z,&a는 call by reference(주소값)이다.
#incluide void set_10(int a, int b) { a = 10; b = 10; } main() { int x; int y; print("beggore initialization : x = %d y =%d \n",x,y); set_10(x,y); pritnf("agter initialization : z = %d y = %d \n", x,y); } |
결과는 다음과 같이 나온다.
before initialization: x = -858993460 y = -858993460
after initialization: x = -85993460 y = -85996460
위의 코드가 저런 값이 나온 이유는 함수에서 포인터를 사용하지 않아 set_10 함수로 들어간 x,y가 빠져나오면서 메모리 변수 할당이 해제되기 때문이다.
#include void set_10(int *a, int *b) { *a = 10; * b = 10; } main() { int x; int y; print("beggore initialization : x = %d y =%d \n",x,y); set_10(&x,&y); pritnf("agter initialization : z = %d y = %d \n", x,y); } |
main의 값을 함수로 바꾸고 싶으면 call by referencef를해서 포인터를 이용해야 한다.
LIST
'언어 > C언어' 카테고리의 다른 글
C_string_strcpy (0) | 2022.04.27 |
---|---|
C_포인터 사용 목적 (1) | 2022.04.26 |
C_string_strlen (0) | 2022.04.25 |
C_2차원 배열_ 함수 이용(2 Dimensional Array) (0) | 2022.04.22 |
selection sort (0) | 2022.04.13 |