[C] 포인터 개념 정리

조금만 쉬면 바로 까먹는, 가장 중요한 내용이다. 잊어버릴 때마다 복습하자.

int a, b; 
int *a, *b;

1. a : a라는 이름의 변수

2. *a : 포인터 변수

3. &a : a의 메모리 주솟값

4. a = b : a와 b의 값이 같음

5. *a = b : 주소 a에 있는 값이 b의 값과 같음

6. *a = 1 : 주소 a에 있는 값이 1임

6. *a = *b : 주소 a에 있는 값이 주소 b에 있는 값과 같음

7. *a = &b : 주소 a에 있는 값이 주소 b의 주솟값과 같음

ex)
swap(int *a, int *b) {
    int temp = *a;  //temp의 값을 주소 a에 있는 값으로 설정
    *a = *b;  //주소 a의 값을 주소 b의 값으로 변경
    *b = temp  //주소 b의 값을 temp의 값으로 변경
}

int i = 300, j = 500;
swap(&i, &j);  //주소 a의 주솟값을 주소 i의 주솟값으로 변경. 주소 b도 마찬가지.

:: i = 500, j = 300

맨날 까먹으니까 잘 외워두자.

댓글