c기초

015. 문자열형 변수 이해하기 (char*)

iloveapeach 2020. 3. 17. 16:02

<결과>

문자열형 변수 str의 값은 대한민국
문자열형 변수 j의 값은 I love Apeach

 

"문자열형 변수는 포인터와 아주 밀접한 관계가 있습니다. 포인터에 관하여는 [106. 포인터 사용하기]에서 설명하기 때문에 여기서는 포인터와 관련이 있다는 것만 알고 넘어가도록 하겠습니다."

라고 적혀있으니 포인터에 대한 설명은 여기서 하지 않겠다.

 

- char str[] = "대한민국";

문자열 변수 str을 선언하고 "대한민국"으로 초기화를 했다.

여기서 이름이 str이고 []이건 뭐냐면 문자열의 길이다.

str[10]이라고 써놨으면 길이가 10이고 여기처럼 아무것도 안써놨으면 알아서 길이를 정한다.

한글은 한 글자당 길이가 2, 알파벳은 길이가 1이다. 참고하자.

 

- char *j = "I love Apeach";

문자열 상수 j이다. "I love Apeach"를 가리킨다.

얘는 값을 바꿀 수 없다.

 

 

왜 str는 변수고 j는 상수죠?

라고 말하면 지금 설명하기 좀 그렇다.

그냥 책에서는 str은 문자열 변수 j는 문자열 상수라는 것만 기억하자고 한다.

 

책에서 중요하다고 하는건 문자열과 메모리는 어떤 관계가 있는가? 이다.

메모리에 문자열 j가 저장된 모습을 그림으로 표현하면

이런 식이다. ( 똥손 미안합니다. )

1칸은 1바이트를 의미한다. 그리고 특이한게 있다. 마지막에 \0 이란게 있다.

NULL 이라는 건데 문자열 끝임을 알려 주는 친구이다.

아스키 코드값이 0이다. ( 숫자 0 이 아님. 숫자 0 은 아스키 코드로 48인가 그럴거임. )

 

메모리에 문자열을 저장할 때 저런식으로 저장한다는 것만 알아두자.