먼저 배열의 이름은 배열의 첫번째 인자의 주소를 저장하는
포인터라는 사실을 알고 시작 해야죠..
char str[]="pointer are fun";
char *p;
p=str; // *p=str 이라고 하면 에러남
char * p <--이렇게 선언을 해 주었으므로
컴파일러는 이미 p 라는 변수가 포인터형이라는 것을 알고 있습니다.
그 상황에서 동일한 타입의 포인터 값을 저장하는 것은 문제가 없습니다.
int M[5]={3,6,9,12,15};
int p = M ;
이 경우 p 는 포인터형 변수가 아니라 그냥 정수형 변수입니다.
int p ; p = M ;
이것과 같은 의미이지요..
int *p = M 은 int *p ; p = M
첫번째 구문과 같지요..
그냥 단순하게 생각하면 컴파일러는 순차적으로 해석을 합니다.
int p = 100 ; 이런 한개의 문장이 있다고 하더라도
컴파일러는 2개의 문장으로 해석을 하는 것이죠
int p ; p = 100 ; 이런식으로
그러니 님께서 말한 2번째의 경우는 정수형 변수를 선언하고
포인터형을 대입한 것입니다. 조금만 생각해 보면
금방 알 수 있는 겁니다.
|