포인터 : 어떤 변수의 주소를 저장하는 변수
int x = 10;
int p = &x;
p는 x의 주소를 저장하고 있고
p는 x의 값에 간접적으로 접근하는 방식
배열 : 같은 자료형을 연속된 메모리 공간에 저장하는 구조
int arr = &arr[0];
arr[0] == (arr+0)
arr[1] == (arr+1)
배열명[인덱스번호] // 인덱스번호는 0부터 시작한다
arr[0] = 1;
(arr+0) = 1;
int x= 10;
int p = &x;
int** pp = &p;
printf("%d", x);
printf("%d", p);
p는 x의 주소 x의 주소를 찾아가려면? 연산자 이용
printf("%d", **pp);
pp는 p의 주소 p의 주소를 찾아가려면? 연산자 필요. p의 값을 찾아갔더니 x의 주소를 찾아가려면? *연산
변수는 공간이다.
int a = 10; // 메모리안의 4바이트짜리 공간 하나
변수는 값을 담는 공간 1개
int b = 20;
int * p =&a; // 포인터는 어떤 타입을 가리키든 항상 8바이트
int arr[3] = {10, 20, 30};
//int 타입 공간 3개가 메모리안에 연속적으로 붙어있는것
arr[0], arr[1], arr[2] 총 12바이트가 한줄로 이어져있음
(int arr[4] = int형 4바이트 4개 = 16바이트
arr1 = 10; // arr1 == (arr1 + 0) == (&arr[0])