#include <iostream>
using namespace std;
//포인터와 배열
//포인터혹은 레퍼런스를 반환하는 함수를 작성할 때 반환값이
//함수의 스택프레임에 잡혀있는 변수의 주소값이 아닌지 꼭 확인해야함
int* TestWrong() {
}
int main()
{
//주소를 담는 바구니
//진퉁은 다른 곳
//p는 단지 그 곳으로 워프하는 포탈
int* p;
//진짜배기 원조데이터가 안에 있음
//닭장처럼 데이터의 묶음
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//그런데 배열과 포인터를 착각하는 경향이 있음
//왜 why? 배열의 이름은 배열의 시작 주소값을 가리키는 TYPE* 포인터로 변환가능!
//TYPE형 1차원 배열과 TYPE*형 포인터는 완전히 호환이 된다.
p = arr;
cout << arr[0]<<endl;
cout << p[0]<<endl;
cout << *(p + 3) << endl;
cout << *(arr + 3) << endl;
//2차원 배열 vs 다중 포인터
//호환되지 않는다
int arr2[2][2] = { {1,2},{3,4} };
//이중 포인터가 아니라 이런 식으로 사용해야함
//거의 사용하지 않음
int(*pp)[2] = arr2;
return 0;
}