작성
·
206
1
int* ptr = arr;
printf("%p %p", ptr, arr);
이럴 때 ptr은 arr주소로 가는 것이라 ptr의 주소는 따로 있다고 생각을 했거든요. 그래서 둘의 주소값이 다르다고 생각했는데 왜 같게 나오는 건가요..
계속 이어서 수강했는데, 어디 강의로 가야 이에 대한 설명을 들을 수 있을까요, 아니면 여기서 설명해주시면 감사하겠습니다.
답변 1
2
안녕하세요, 답변 도우미 Soobak 입니다.
위 코드에서 ptr
이 가리키는 주소는 ptr
변수에 저장된 값으로, arr
배열의 첫 번째 원소의 주소입니다. (배열의 이름은 포인터와 호환이 되는 형태입니다.)
반면, 의문을 가지신 ptr
변수 자체의 주소는 &ptr
을 통해서 표현되며, ptr
변수가 메모리에서 위치한 주소입니다.
각각의 주소에 대한 예시 코드를 첨부드립니다.
#include <stdio.h>
int main()
{
int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr;
printf("ptr이 가리키는 주소: %p\n", ptr); // arr의 주소, 즉 배열의 첫 번째 원소의 주소
printf("arr의 주소: %p\n", arr); // 마찬가지로 배열의 첫 번째 원소의 주소
printf("ptr 변수의 메모리 주소: %p\n", &ptr); // ptr 변수 자체의 메모리 주소
return 0;
}