글
(8-2)Pointer
C/C언어 이론
2018. 10. 3. 18:43
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <stdio.h> // [선언] void SwapValue(int iNum1, int iNum2); void SwapRef(int * pNum1, int * pNum2); void main() { /* 함수에서 매개변수를 통해 값을 전달 받는 방법 1. Call by Value - 값에 의한 호출 - 우리가 여태 함수를 호출했던 형태 - 실제 '값'을 전달 받는다. 2. Call by Reference (address) - 참조에 의한 호출 (주소에 의한 호출) - 포인터변수를 매개변수로 사용하여 '주소 값'을 받는다. > 함수 외부의 변수를 접근할 수 있다. */ int iNum1 = 100; int iNum2 = 200; // 두 변수의 값을 바꿔주는 함수 SwapValue(iNum1, iNum2); // SwapValue 호출 시 각 변수에 저장된 실제 '값' (100,200)을 전달! // iNum1,iNum2는 값만 전달해줬기 때문에 영향이 없다! printf("SwapValue 호출 후, iNum1(%d), iNum2(%d)\n", iNum1, iNum2); SwapRef(&iNum1, &iNum2); printf("SwapRef 호출 후, iNum1(%d), iNum2(%d)\n", iNum1, iNum2); // SwapRef 호출 시 각 변수의 주소 값을 전달! (함수의 매개변수가 포인터변수) // 함수 내부에서 main()의 iNum1,iNum2 공간을 직접 접근하여 값을 변경 } // [정의] : 함수의 실제 수행문 (몸체) void SwapValue(int iNum1, int iNum2) { int iTemp = iNum1; // 임시공간에 iNum1의 값을 저장 iNum1 = iNum2; iNum2 = iTemp; // 임시공간의 값(원래 iNum1의 값)을 iNum2에 저장 printf("SwapValue 수행문, iNum1(%d), iNum2(%d)\n", iNum1, iNum2); // [참고] // 파이썬에서는 iNum1, iNum2 = iNum2, iNum1 이 코드가 된다...! } void SwapRef(int * pNum1, int * pNum2) { int iTemp = *pNum1; // 전달받은 주소의 값 *pNum1 = *pNum2; *pNum2 = iTemp; } | cs |
'C > C언어 이론' 카테고리의 다른 글
(8-4)Pointer (0) | 2018.10.03 |
---|---|
(8-3)Pointer (0) | 2018.10.03 |
(8-1)Pointer (0) | 2018.10.03 |
(7-4)Array (0) | 2018.10.03 |
(7-3)Array (0) | 2018.10.03 |