int *a;
*a = 10;
printf("%d", a);
printf("%d", *a);

int a: 포인터 변수를 선언하는 것이다. 다만 변수명이 a는 아니고, a다.
하지만 변수의 타입이 포인터 변수다.
*a = 10: 포인터 변수 a에 값 10을 삽입한다.
*가 들어있으면 ~의 값을 붙이면 편하다.
맨처음 선언할때만 포인터 변수라고 선언하는 것이고,
그다음에 읽을 때는 "~의 값"이라고 부르면 편하다.

int b = 10;
int *a;
a = &b;
printf("%d\n", *a);
printf("%d\n", b);

#include <stdio.h>
void main() {
int A = 10, B;
int *C = &B;
B = A--;
B += 20;
printf("%d", *C);

1. A에는 값 10, B에는 쓰레기 값, 포인터 변수 C를 선언한다.
2. 포인터 변수C에는 B의 주소값 101이 들어간다.

3. (주의) B에다가 A에서 1을 뺀 값인 9를 넣으면 안된다. 왜냐하면 "B = A--;"는 후위연산이다. 따라서 B에다가 먼저 10을 할당한 후에 A를 1 빼야한다.

4. B+=20;: 10+20=30이 들어간다.
5. *C: C의 값을 출력하므로, 30이 출력된다.
따라서 정답 = 30
scanf("%d", 변수의 주소);
이 코드는 정수 값을 입력받음을 선언하고, 이 정수값을 어떤 변수의 주소값(int z의 &z)에 저장할 것인지를 선언한다.
int a;
scanf("%d", &a);
printf("%d", a);
int main() {
int i = 10;
int j = 20;
int *k = &i;
scanf("%d", k);
printf("%d", %d, %d\n", i, j, *k);
return 0;

1. i,j에 각각 10,20을 넣는다.
2. 포인터 변수 k를 선언하고, i의 주소값 100이 들어간다.

3. 90이라는 값을 k의 값으로 입력받는다. k는 i의 주소값을 담고 있기 때문에
i는 90이라는 값이 새로 들어간다.
4. i,j의 값은 각각 90,20이다. k의 값은 100번지의 값이므로, 90이다.
따라서 3개를 출력하면 90,20,90이다.