인프런 커뮤니티 질문&답변

ghkd1118님의 프로필 이미지

작성한 질문수

(2024) 일주일만에 합격하는 정보처리기사 실기

포인터의 개념과 활용

포인터의 개념과 활용

해결된 질문

24.09.08 20:34 작성

·

81

0

15:25 예시 세번째 질문입니다.

문자열의 길이 계산에서

length는 0으로 선언되었는데

str[length]는 위에있는 Hello, World! 문자의 길이에 맞춰서 length 값을 1씩 증가하되 시작점이 0이라는 걸까요?

널값을 어떻게 만난다는건지 잘 이해가 안가서요.

 

문자열 길이계산부분만 다시 설명 부탁드립니다.

 

답변 1

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

2024. 09. 08. 20:41

안녕하세요, 가장 오른쪽의 예시를 말씀하신 것으로 알고 답변 드립니다.

 

여기서의 핵심은 아래 for문이 아니라 위의 while입니다.

while은 반복문인데, 조건문이 참이 아닐 때까지 계속 반복합니다.

(참인 경우 아래 블럭으로 들어가고, 거짓인 경우에는 블럭을 수행하지 않습니다.)

 

 

지금 보면 while은 length라는 변수에 1씩을 계속 누적하고 있습니다.

(변수++는 후위연산자로서, 값을 1 증가하면서 자기 자신에 그 값을 누적합니다.)

str[length] != '\0'이라는 이야기는 str이라는 배열의 인덱스를 length 변수를 통해 하나씩 증가시키면서 접근하고 있을 때,

어느 순간에는 그 값이 '\0'과 같아지는 순간이 온다는 얘기입니다.

지금 예제의 경우 문자 느낌표(!) 다음이겠죠.

 

'\0'과 같아졌는데, "같지 않다?"를 물어봤으니까 false가 됩니다. == "같니?"를 물어봤을 때 true가 나와야 하니까요. (참고로 C언어에서 true, false는 1, 0을 리턴 합니다.)

 

그래서 그 순간까지의 변수 length를 가지고 아래의 for문의 갯수를 정합니다.

그래서 아래에는 무조건 '\0'이 되기 전까지만 반복하게 됩니다.

 

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

ghkd1118님의 프로필 이미지

작성한 질문수

질문하기