본문 바로가기
개발 공부/C언어

#8 C언어 배열이름 앞에는 왜 &를 안 붙일까?

by 반달bear 2022. 8. 1.
반응형

 

int * ptr =&arr;
 
 

이렇게 하면 절대 안됩니다 (제발 머리에 들어가라....)

배열을 포인터 변수에 할당하거나 배열의 주소값으로 뭘 하려고 할때는 '&'쓰면 안됨!!!

왜냐면 배열은 이름 그 자체로 배열의 시작주소값을 의미하기 때문입니다.

&arr[0]는 특정 배열의 주소를 가르키기에 &를 붙이지만 arr는 그 자체로 배열의 시작주소 값을 의미하기에 &를 붙이지 않습니다!!!

 

 

 '&'을 붙이고 싶으면 정확하게 위치를 표현해줘야 하고

int * ptr = &arr[0];

'&'을 안붙이려면 배열 이름만 써야합니다.

int * ptr = arr;

 


또 기억할 점 배열 arr[i] = *(arr+i) 이다.....

배열은 포인터, 포인터는 배열 int arr[]와 int * arr는 이음동의어입니다. 다른소리 같은 뜻!!!!

자꾸 (*arr+i) 이러고 있는데 이건 arr이 가르키는 변수에 1을 더하는 것...

 

반응형

댓글