int *p[3] = {a[0], a[1], a[2]}; —>; should be working. 컴파일 에러는 안나오지만 오리지널 배열과 다른 배열임.
a[0] ={10,20,30} = *&a[0]
a[1] ={40,50,60}
a[2] ={70,80,90}
a+0 = &a[0] 양변이 서로 동일한것을 표현한것임.
a+1 = &a[1]
a+2 = &a[2]
위에서 봣듯이
&a[0] 과 *&a[0] 은 서로 같은게 아님. 주소는 같긴 하지만.
결론적으로
int *p[3] = {a[0], a[1], a[2]}; 과 int *p[3] = {a+0, a+1, a+2}; 는 서로 다른 배열임. 둘다 문법적으로 틀린 정의는 아님.