inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2027 대비!) 일주일만에 합격하는 정보처리기사 실기

함수(메서드) 선언과 호출

데이터 참/거짓 강의 질문

해결된 질문

340

김다훈

작성한 질문수 11

0

문자열 배열에서 \0(null) 을 붙임으로써 문자열이 끝났음을 알 수 있다고 하셨는데 그럼 첫번째 문자열배열 str1의 경우엔 왜 널값이 안붙나요? 배열에 각각 문자가 하나씩 들어가는것과 문자열이 한번에 한칸에 다 들어가는 차이 때문인가요? 명확한 해설 부탁드려요.

python java c 정보처리기사

답변 3

0

주말코딩

아, 데이터 참/거짓 영상이신데

질문 자체가 영상 <함수(메서드) 선언과 호출>에 연계되어 있어서 헷갈렸습니다.

 


 

문자열로 선언하는 경우 (배열 아니고) "Hello"로 하는 경우에는 알아서 '\0'이 들어가있습니다.

하지만 배열로 하나씩 넣는 경우에는 보통 마지막에 의도적으로 '\0'을 넣어서 문자열의 끝을 만들어줍니다.

(예를 들어 배열 100칸짜리를 만들어 두고, 5개만 할당했을 때는 '\0'을 넣어서 끝을 알려주기 위해서 그렇게 할 수 있습니다.)

그런데 아래와 같이 하면 sizeof 문자열 했을 때 5가 나오면서 전체가 정상적으로 출력이 되긴합니다.

#include <stdio.h>

int main() {
    // 문자 배열을 선언합니다.
    char str[] = {'h','e','l','l','o'};
    
    // 결과를 출력합니다.
    printf("%d\n", (int)sizeof(str));
    printf("%s\n", str);
    
    return 0;
}

그러니까 엄밀히 말하면, 쓰지 않아도 정상적으로 동작은 합니다.

하지만 저렇게 디테일하게는 문제에 나오지 않으니, '\0'을 안 넣어도 동작은 하는구나 정도로 알고 계시면 되겠습니다.

0

김다훈

2분초반이요~ 2분 2초쯤 str1[]="Hello"

str3[] 차이요

0

주말코딩

혹시 영상에서 몇 분 몇 초 대일까요?

정처기 2026-3 실기 문의

0

59

2

정처기 실기 3회 컴싸 사용 여부

0

35

1

모의고사 1 회 2번문제 중

0

54

2

26-2 이론문제 재탕

1

40

1

26-2년도 코드문제

0

30

0

26-2 코드문제

0

33

1

15분 48초 질문

0

44

2

26-1년도 이론문제 재탕

0

58

1

26-1년도 코드문제 재탕

0

42

0

이론재탕만 눈치챘어도

0

68

1

25-3년도 이론문제 재탕

0

51

1

25-3년도 코드문제 재탕

0

38

0

출력값 문의

0

45

2

25-2 분기커버리지

0

45

0

25-2 이론 재탕

0

60

1

25-1 이론 재탕

0

49

1

서브넷 마스크

0

48

2

모의고사 1회 계산문제 2개 맞았는데

0

65

2

업캐스팅 문제 예시 4번 부모 호출

0

48

2

모의고사 자료 해설이 너무 불친절하네요.

0

93

2

부모의 생성자 출력 관련

0

44

2

24-3 이론파트 재탕문제

0

56

0

누락코드

0

44

1

다차원 배열 포인터 질문있습니다

0

67

3