inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

독하게 시작하는 C 프로그래밍

섹션 13 배열의 기본 문법

해결된 질문

216

semu0523

작성한 질문수 17

0

안녕하세요 강사님

섹션 13 배열의 기본 문법 관련해서 질문이 있습니다

강의에서 "Hello"이라는 문자의 배열의 요소를 6개라고 하셨는데, 이것은 Hello라는 문자는 알파벳 5개지만 문자의 배열(문자열)의 끝에는 항상 null이 들어가서 6개라고 말씀하신걸까요?

그렇다면 모든 문자열의 요소 개수 = 문자열의 알파벳 개수 +1(null)라고 생각하면 될까요?

 

또한 문자열 상수는 이름이 없는 문자의 배열이라고 하셨는데 이름이 없는 문자의 배열이라는 것이 이해가 잘 가지 않습니다. 예를 들어 "Hello"는 문자열이고 변하지 않는 상수가 맞으니깐 문자열 상수라는 것은 알겠는데 이름이 없다는게 무슨 의미일까요?

 

감사합니다.

c 컴퓨터-구조 assembly-language vc++

답변 1

0

널널한 개발자

네, 맞습니다. 문자열은 기본적으로 null로 끝나도록 메모리에 저장되어 있습니다. char 배열이나 문자열 상수같은 것들이 모두 이런 구조로 되어 있습니다.

그리고 char 배열 선언의 일반적인 코드는 아래와 같습니다.

char szBuffer[128];

그런데 여기서 이름을 빼면

char [128]

이 되고 읽기 전용으로 선언한다면

const char [128]

이 됩니다. 그리고 이 형식이 소위 문자열 상수의 형식 입니다.

C언어에서 모든 변수들은 이름으로 접근합니다. 그러나 문자열 상수는 이름이 아니라 겹따옴표를 활용해 기술하며 별도로 이름을 부여하지는 않습니다. 첫 번째 예제인 HelloWorld 예제만 하더라도 "Hello. World"라는 문자열을 사용하는데 이름이 있지는 않습니다. 참고하시기 바랍니다. 😄

scanf("%d\n") 의미

0

20

1

주소 연산자(&) 간접 지정자(*) 반대 개념

0

33

1

Virtual Memory, Memory, Memory mapping tables

0

51

1

샘플코드 출력 오류 발생 질문드립니다

0

63

2

값의 교환에 사용되는 변수의 위치.

0

88

2

메모리 비교에 관한 질문

0

81

2

문자열 Null

0

63

1

C, C++

0

88

2

문자열 입출력 코드 에러

0

60

2

선생님! 120화 2분 50초 질문입니다.

0

67

1

caller 가 메모리 할당 해제를 할 때의 문제점 질문

0

64

2

단축키 맞는지 여부 문의드립니다.

0

60

2

문자열을 사용하는 이중 포인터에 대하여 질문합니다

0

66

1

char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요

0

78

2

용어 설명 필요

0

57

2

stdin, stdout

0

71

2

필수 실습 (최댓값을 반환하는 함수)

0

93

2

아......ㅠㅠ

0

100

2

버퍼 내 엔터

0

72

1

2진수 뺄셈에서 carry-out

0

112

2

union 식별자는 실무에서 보통 어디에서 사용하나요?

0

80

2

필수실습문제 공부법 (진도 vs 복습)

0

104

2

예제파일 다운로드

0

79

2

Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?

0

120

3