inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

(기출) 2023년 1회 코드해석 문제

포인터 주소값이 null?

해결된 질문

192

김인도

작성한 질문수 23

0

python java c 정보처리기사

답변 1

0

주말코딩

p = a;

이 부분이 빈 값(null)에서 a를 가리키라고 엎어친 것입니다.

 

코드를 순서대로 이해하실 수 있게 현실에 비유해보겠습니다.


 

null은 그냥 없다고 생각하신다고 하면,

포인터 변수(p)를 손가락이라고 생각해봅시다.

  1. 저는 지금 제 손가락을 가위모양으로 만들었습니다. 무언가를 가리키려고 합니다. (char *p) - 포인터 변수 탄생만 시켰다는 뜻. 정확히 말하면 방금 만든 손가락은 "char" 형태의 데이터만 가리킬 수 있게 만든 것임.

 

  1. 근데 일단 허공을 가리키고 싶습니다. ( = NULL)

안 가리켜도 되지 않냐고요? (그냥 char *p;만 선언) 네, 그래도 됩니다.

그런데 허공을 가리켜도 되죠. 개발자가 코드를 작성하는 마음대로 할 수 있습니다.


  1. 저기에 문자열 a가 탄생해있습니다. (char a[] = "Art";)

  2. 허공을 가리키고 있는 손가락으로 a를 가리키라고 명령합니다. ( p = a );

(여기서 질문)

Q. 왜 a의 주소를 넘겨줘야하는데 &a라고 안하고 그냥 a로 주나요?

A. C언어에서는 배열과 문자열은 이름 그 자체가 주소처럼 행동합니다. 이건 C언어의 문법 스펙이라 강제로 암기가 필요한 부분. 

 

  1. (결론) 자, 이제부터 제 손가락은 a의 첫부분을 가리키고 있습니다.

 

이해에 도움이 되셨을까요?

 

 



 

(미니퀴즈1) p의 값을 출력하면 뭘까?

#include <stdio.h>

int main() {
    char a[] = "Art";
    char* p = a;
    printf("%c\n", *p); // A
    return 0;
}

(*p) 정답은 %c로 출력했다는 가정에서 'A'. 포인터는 배열 맨 앞의 주소를 가리키고 있음

 

(미니퀴즈2) a의 값을 출력하면 어떻게 될까? %c와 %s일 때 다름.

#include <stdio.h>

int main() {
    char a[] = "Art";
    printf("%c\n", *a); // A
    return 0;
}

 위의 경우는 배열의 주소(배열 이름은 곧 주소처럼 취급가능)의 값이니 첫 글자인 A만 출력

 

 #include <stdio.h>

int main() {
    char a[] = "Art";
    printf("%s\n", a); // Art
    return 0;
}

(출력문에 들어가는 변수값에 * 별 없음 주의. 없어야 제대로 실행됨)

이 경우에는 메모리 주소를 주면서 %s로 출력하라고 해서 "Art" 전체가 출력.

 

(미니퀴즈3) A만 출력하는 3가지 방법을 얘기해라.

*a, *p, a[0]

문자열도 배열로 선언하기 때문에 배열처럼 인덱스로 접근하여 출력할 수 있습니다. (단, %c 형태로 출력 필요)

 

 

이것은 그냥 받아들이고 외우는 것이 좋습니다.

 

감사합니다.

 

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

0

10

1

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

0

51

2

조건 반복문 질문: for 문 ?

0

62

1

정처기 26-2회. 9번 질문드립니다!

0

79

1

이론 보면서 질문이 있습니다.

0

75

2

정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문

0

87

2

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

0

148

2

262 정처기 실기 C언어코딩

0

46

1

정보처리기사 262 실기 Hash(해시) 질문

0

78

2

static 변수 질문입니다.

0

61

2

파이썬 4강 질문입니다.

0

68

2

모의고사 1회 3번문제

0

88

3

41강 30:10

0

67

2

이론 공부법 질문 있습니다.

0

89

2

부모의 생성자 관련 질문

0

66

2

시험지 문제에 필기해도 되나요?

0

89

3

41강 11:23

0

59

2

4강파이썬 질문입니다

0

54

2

try-catch 핸들러명

0

65

2

36강 3:48

0

64

2

35강 18:27

0

66

2

자식 코드 내 super() 생략

0

60

2

출력질문

0

75

2

31강 4:06

0

66

2