#include<stdio.h> void swap(int a, int b); int main(void) { int val1 = 10; int val2 = 20; swap(val1, val2); printf("val1: %d\n", val1); printf("val2: %d\n", val2); return 0; } void swap(int a, int b) { int temp = a; a = b; b = temp; printf("a : %d\n", a); printf("b : %d\n", b); } |
1. 단순하게 값만 복사하고 연결이 끊어지는 것을 의미한다. Reference 와 차이를 설명하기 위해
2. Swap 함수에 대한 이해
3. 이것 몇 번 째 작성인지는 모르겠다. 이제 마지막.
#include<stdio.h> void adder(int* pVal); int main(void) { int val = 10; int val2[3] = { 0,5,10 };
adder(&val); printf("val2:%d\n", val2[0]); adder(val2); printf("val:%d\n", val); printf("val2:%d\n", val2[0]); return 0; } void adder(int* pVal) { (*pVal)++; } |
1. 헷갈렸던 부분 (*pVal)++ 이랑 *(pVal++) 이 것 둘의 차이
2. 전자의 경우 값을 +1 그러니 자연수 1을 더하라는 것이고 후자의 경우는 해당 자료형 바이트 이동 후 값을 의미한다. 그러므로 정독의 필요성과 선행 연산자의 차이를 구분 짓는 괄호의 차이를 알고 있으면 좋겠다.
#include<stdio.h> void swap(int *a, int *b); int main(void) { int val1 = 10; int val2 = 20; printf("Before val1 : %d\n", val1); printf("Before val2 : %d\n", val2); swap(&val1, &val2); printf("After val1: %d\n", val1); printf("After val2: %d\n", val2); return 0; } void swap(int*a, int*b) { int temp = *a; *a = *b; *b = temp; } |
1. Reference 로 호출하면 하나의 함수에서 변경이 다른 함수에서도 변경이 된다. 그 이유는 유일한 메모리 주소를 이용해서 값을 변경을 했기 때문이다.
2. 즉, 주소값을 활용하여 그 주소값의 데이터 값을 변경하는 것이다.
3. 단순히 값 복사가 아니라, 주소값에서 변경을 요구하므로 전체 메모리를 생각해야 한다.