inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

08:30 이중포인터 질문

해결된 질문

18

유선영

작성한 질문수 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

0

주말코딩

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

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


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

12

2

자식 기본 생성자 출력 조건

0

7

1

부모 및 자식 기본생성자 호출

0

10

1

포인터 16강 9:44

0

9

1

6강 17:50

0

15

2

6강 11:37

0

20

2

6강 5:15

0

25

1

5강 5:45

0

19

2

전체적으로 답을 먼저 알려주지 마세요..

0

25

2

업캐스팅 문제 예시 5

0

46

2

(기출) 2025년 2회 이론 파트

0

42

2

26년 1회실기

0

50

2

강의 자료

0

43

2

27:15 break 출력

0

41

2

55강 파이썬에만있는 연산자들

0

39

2

55강의 파이썬에서만 있는 연산자들

0

30

2

29강 5:00

0

36

2

띄어쓰기

0

45

2

공부 순서

1

61

2

재귀함수 연산법

0

36

2

26년 1회차 기출 강의

0

68

2

기출문제

0

68

1

C언어에서

0

66

1

포인터 질문

0

63

2