c언어 포인터를 공부중인데요
하루
2023.04.01
#include stdio.hint main(void)
{
int arr[3]={0, 1, 2};
int val=10;
int *ptr; ptr=arr; printf(%d, %d, %d \n, ptr[0], ptr[1], ptr[2]); ptr=&val; printf(%d, \n, ptr); return 0;
}
에서ptr=arrptr=&valarr에는 &이 붙지 않고 val에는 왜 &가 붙는지 궁금합니다
-
연와인
arr 은 int 가 3 개 묶어진 배열이잖아요?
&arr 은 int 가 3 개 저장된 메모리의 주소가 되겠죠?
배열은 배열의 첫번째 요소가 저장된 메모리의 주소로 평가됩니다.
그래서 arr 은 &arr[0] 로 평가되는 것이죠.
ptr 은 int 가 저장된 메모리의 주소를 저장할 수 있는 변수이므로,
&arr 가 아닌 arr 의 평가값 즉 &arr[0] 을 저장하는 것이 맞죠., -
다솜
이렇게 이해를 하면 됩니다.
\배열의 이름은 배열 요소의 첫 번째 데이터가 들어있는 곳의 주소와 같다.\
즉 arr는 arr[0]의 주소와 같습니다. 이걸 다시 말하면
arr는 &arr[0]과 같습니다. -
가시내
arr == &arr[0] 과 같습니다.
printf(\%p %p \\n\