inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

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

08:30 이중포인터 질문

해결된 질문

72

유선영

작성한 질문수 1

0

char *ptr_a=str;

char **ptr_b=&ptr_a;

 

ptr_a는 str 배열의 주소를 저장한 포인터로 선언이 된거고, ptr_b는 ptr_a 주소를 저장한 포인터인데, ptr_b 포인터를 선언할 때 *이거 별표를 꼭 2번 써야 하는건가요?

char *ptr_b=ptr_a;

이렇게 선언하면 안되는건지, 그리고 ptr_a도 배열인데 앞에 &를 쓰면 오류가 아닌지 헷갈립니다.

python java c 정보처리기사 정보처리산업기사

답변 1

1

주말코딩

안녕하세요! 헷갈리기 쉬운 부분인데 아주 좋은 질문이에요.

이 코드 기준으로 하나씩 짚어드릴게요


1. 별표(*) 개수는 "몇 단계를 건너야 실제 값이 나오는가"를 뜻해요

  • str → 실제 문자들이 담긴 배열

  • ptr_a → str의 주소를 담음 (1단계) → 그래서 char *

  • ptr_b → ptr_a의 주소를 담음 (2단계) → 그래서 char **

즉 &ptr_a의 타입 자체가 char **예요.

담는 그릇(ptr_b)도 똑같이 char **여야 타입이 맞습니다.

별표를 하나만 쓰면 단계가 안 맞아서 오류가 나요.


2. char *ptr_b = ptr_a;는 오류는 아니지만, 의미가 완전히 달라져요

  • 이렇게 쓰면 → ptr_b가 ptr_a와 똑같이 str을 가리킴

  • 원하시는 것 → ptr_b가 ptr_a를 가리킴 (char **ptr_b = &ptr_a;)

앞의 방식으로 쓰면 아래 *ptr_b = str2; 같은 이중 포인터 동작을 할 수 없어요.

"ptr_a의 주소를 저장"하려면 반드시 **와 &를 함께 써야 합니다.


3. ptr_a 앞에 &를 쓰는 건 전혀 문제없어요

  • 배열은 str이고, ptr_a는 엄연한 포인터 **"변수"**예요

  • 변수는 자기만의 주소를 가지므로 &ptr_a도 당연히 가능하고

  • 그 결과가 바로 char ** 타입입니다


한 줄 요약

  • & → "그 변수가 저장된 주소를 달라"

  • * 개수 → "그 주소가 몇 단계짜리 포인터인지"

이 둘을 짝지어 생각하시면 훨씬 덜 헷갈리실 거예요. 화이팅입니다! :)

배열 포인터 출력 표시

0

21

1

포인터 증감 또는 값 증감

0

18

1

배열 포인터 함수 관련

0

21

1

실기 이론 통합 요약본 버전

0

23

1

업캐스팅 3번 문제 예시

0

33

2

push pop 설명 되어있는 강의가 몇강인가요?

0

47

1

모의고사 파일오류

1

77

3

모의고사 다운

0

53

1

업캐스팅 원칙

0

65

2

6분46초

0

57

2

공략법

0

65

1

모의고사 파일과 이론파일 업데이트

1

74

3

이론 pdf 다운은 어디서 하나요?

0

72

2

13분 40초

0

65

2

정보처리기사 26년 실기 2회 네트워크 부분

0

78

2

기출문제 재탕

0

57

1

뻬먹은 코드

0

47

1

기출문제 재탕

0

37

0

모의고사1회 2번문제 뭔지 모르겠네요 강의올려주시면안될까요?

0

51

1

영상 다운로드는 안되나요?

0

81

1

26년2회 실기기출은 언제쯤...

0

126

2

이론 공부법 요약본 버전 업데이트 문의

0

109

2

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

115

2

조건 반복문 질문: for 문 ?

0

92

1