아 미치겠네요. 쫌있다 출근해야되는데 잠이 안와요 ㅜㅠ
심심해서 끄적거려봅니다.
이불속에서 아이패드로 하는거라 오타는 알아서 걸러주세요.
int* a ; // a는 정수형 포인터입니다.
int a[10]. // a는 배열입니다.
int* a[10] // a는 배열입니다. 이 배열엔 10개의 정수형 포인터가 저장됩니다.
a는 포인터이기 전에 배열입니다.
위치상 포인터가 먼저 나왔는데도요.
그 이유는 []연산자가 포인터 * 연산자보다 우선순위가 높기 때문입니다.
포인터의 배열, 포인터 배열이라 말합니다.
int (*a)[10] ;
a는 포인터입니다. 괄호때문에 포인터 * 연산이 우선순위를 잡게 되어 배열이 아니라 포인터가 됩니다.
무엇을 가리키는 포인터일까요?
나머지 부분, int [10].... 정수형이며 갯수가 10인 배열을 가르키는 포인터입니다.
int test[10] ;
int (*a)[10] ;
a = &test ;
요로케 가리키면 됩니다.
배열의 포인터, 배열 포인터라 합니다.
연산자 우선순위는 수학의 그것과 일치하여 힐끗 보고 넘기는 경우가 많은데
자칫 실수를 범할 수 있습니다.
참고로 위 포인터 배열과 배열포인터를 sizeof(*a) 로 찍어보시면 이에껀 4, 밑에껀 4*10=40 이 나올껍니다.
배열포인터에 그냥 정수형 포인터를 넣으면 c++ 은 에러를 뱉어내지만 c는 그냥 warning 만 주절거립니다.
마음속에 새기고 새깁시다. Warning은 에러입니다.
하, 잠 안온다. ㅜ.ㅠ