지금 C기초플러스 배열과 포인터 chapter 10하고있는데..

이해가 정말 안됩니다 .. 15page정도 남겨두고 복습 안하면 뒤에 읽어도 이해 못할거같아서 복습하고 처음부터 다시 공부를 하려고 하는데요.


일단


int *pt

int ar1[2][3];

pt = ar1 ; // 유효하지 않다


라고 하는데.. pt는 int형을 가리키는 포인터잖아요

근데 ar1은 배열이니까.. ar1만 써도 주소를 나타내는 건데

왜 pt = ar1; 이 틀리게 되는거죠 ?




그리고 const의 개념도 헷갈리는데요.. 이게 예전에는 그냥 const int SIZE = 4;


이렇게하면 SIZE라는 변수는 무조건 4를 갖는 값이다. 로 알고있는데요


배열과 포인터에서는 조금 다르더라구요


상수 데이터의 주소나, 상수가 아닌 데이터의 주소를 상수를 가리키는 포인터에 대입하는 것은 유효하다.

double rates[5] = { 1,2,3,4,5 };

const double locked[4] = {1,2,3,4};

const double *pc = rates;

pc = locked;

pc = &rates[3];


이건 다 유효한 반면에


double rates[5] = { 1,2,3,4,5};

const double locked[4] = {1,2,3,4};

double *pnc = rates; // 유효함

pnc = locked ; // 유효하지 않음

pnc = &rates[3]l; // 유


라고하는데

const double locked[4] = {1,2,3,4}; 이 말이 lock[0] lock[1] lock[2] lock[3] 에 차례대로 1,2,3,4 값을 넣는데 이 값은 변경할 수 없다

이런 의미가 아닌가요 ? 포인터에 const를 쓰는게 무슨말인지 잘 이해가 안가고

전체적으로 헷갈리니까 개념이 뒤죽박죽 되는 것 같은데 어디 배열과 포인터 잘 설명해주는 곳이 없나요 ?


C기초 플러스 번역서로 공부중인데 많이 어렵네요 ..