문자열 비교
들어가기 전에
두 문자열이 같은 내용을 담고 있는지 어떻게 비교할 수 있을까요? 우리가 배운 문자열 자료형을 사용해서 바로 직접적으로 비교가 가능할까요? 문자열이 저장되어 있는 방식을 자세히 들여다보면서 해서 위와 같은 질문에 대한 답을 해 봅니다.
학습 목표
문자열이 저장되어 있는 방식에 근거해서 문자열을 비교하는 방법에 대해 설명할 수 있습니다.
핵심 단어
- 문자열
위 코드를 실행하면, s라는 포인터의 값, 즉 “EMMA”라는 문자열의 가장 첫 값인 “E”에 해당하는 메모리 주소를 출력하게 될 것입니다.
그렇다면 아래 코드들은 무엇을 출력할까요?
s가 가리키는 곳을 시작으로 “EMMA”라는 문자열로 이루어진 문자들의 배열이 있으니, 각각
s라는 문자열의 첫 번째 문자에 해당하는 주소값,
s라는 문자열의 두 번째 문자에 해당하는 주소값,
s라는 문자열의 세 번째 문자에 해당하는 주소값,
s라는 문자열의 네 번째 문자에 해당하는 주소값을 출력하게 되겠죠.
이를 좀 더 자세히 들여다보면 &s[0]는 “E”의 주소값을, &s[1]은 “M”의 주소값을, &s[2]은 “M”의 주소값을, &s[3]은 “A”의 주소값을 의미합니다.
문자열은 첫번째 문자를 시작으로 메모리상에서 바로 옆에 저장되어 있습니다.
다시 말해, 가장 첫 번째 문자에 해당하는 주소값을 하나씩 증가시키면 바로 옆에 있는 문자의 값을 출력할 수 있는 것이죠.
따라서 아래 코드는 E M M A를 순서대로 출력할 것입니다.
문자열을 비교할 때도 아래 코드와 같이 문자열이 저장된 변수를 바로 비교하게 되면 그 변수가 저장되어 있는 주소가 다르기 때문에 다르다는 결과가 나올 것입니다.
정확한 비교를 위해서는 실제 문자열이 저장되어 있는 곳으로 이동하여, 각 문자를 하나하나씩 비교해야 되겠죠.
"); } }
생각해보기
문자열을 비교하는 코드는 어떻게 작성해야 할까요?
나의 생각 : JAVA에서는 equals를 사용했었는데 같지 않을까..?
출처 : https://www.boostcourse.org/cs112/lecture/119030?isDesc=false 네이버커넥트재단