강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

태0님의 프로필 이미지
태0

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

포인터 조작과 출제 패턴 (2. 포인터 증가/감소, 이중 포인터)

17강 포인터 조작과 출제패턴 / 08:40 / 메모리주소 관련 문의

작성

·

21

0

안녕하세요.

영상에서 선언해 주신 str[], ptr_a, ptr_b 3개 변수의 메모리주소에 대해 문의드립니다.

char str[] = "Hello";

char *ptr_a = str;
> 포인터변수 ptr_a의 메모리주소는 배열변수 str과 동일하다.

char **ptr_b = &ptr_a;
> 이중포인터변수 ptr_b의 메모리주소는 포인터변수 ptr_a의 메모리주소와 동일하다.

이렇게 되면 str, &ptr_a, &ptr_b가 모두 동일한거 아닌가요?

이중포인터에 대해 이해가 부족해서 질문이 생겼을수도 있을거 같긴 한데, 영상 보면서 그때그때 궁금한게 생기면 일시정지하고 질문을 남기고 있어서 혹시 뒤에 설명해 주시는 내용이더라도 양해 부탁드립니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 태0님.

질문해주신 부분은 포인터와 메모리 주소의 이해와 관련된 부분으로, C언어에서 흔히 헷갈리기 쉬운 개념입니다. 각 변수의 메모리 주소와 관련해 설명드리겠습니다.

  1. char str[] = “Hello”;

    • str 배열 자체는 여러 글자가 저장된 메모리의 시작 주소를 가집니다. str의 이름 자체로 배열의 시작 주소를 가리킵니다. 따라서 배열의 시작 요소인 'H'의 메모리 주소를 나타냅니다.
  2. char *ptr_a = str;

    • ptr_astr의 시작 주소, 즉 배열의 첫 번째 요소 'H'의 주소를 가리킵니다. ptr_a 자체의 메모리 주소와 str의 메모리 주소는 다릅니다. ptr_a에 저장된 값이 str 배열의 시작 주소와 같은 값을 가진다는 뜻입니다.
  3. **char ptr_b = &ptr_a;

    • ptr_b 는 포인터 변수 ptr_a의 주소를 저장합니다. 즉, ptr_bptr_a가 저장된 메모리 위치를 가리키고 있습니다. ptr_b 자체의 주소는 ptr_a의 주소와는 다릅니다.

정리하자면, strptr_a는 배열의 첫 번째 요소의 주소와 관련이 있으며, ptr_bptr_a의 주소, 즉 포인터의 주소입니다. 이 때문에 str, ptr_a, &ptr_b는 서로 다른 위치를 가리키는 것입니다.

참고로 이중포인터는 포인터를 가리키는 포인터입니다. 따라서 자료구조나 함수에서 포인터 그 자체를 변경하거나 다루고자 할 때 유용하게 사용됩니다.

유사한 포인터 관련 문의와 답변을 확인하시려면 아래 링크를 참고해 주세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

태0님의 프로필 이미지
태0

작성한 질문수

질문하기