컴퓨터공학/메모리

문자열 비교

도전하는일반인 2021. 9. 24. 12:11

들어가기 전에

두 문자열이 같은 내용을 담고 있는지 어떻게 비교할 수 있을까요? 우리가 배운 문자열 자료형을 사용해서 바로 직접적으로 비교가 가능할까요? 문자열이 저장되어 있는 방식을 자세히 들여다보면서 해서 위와 같은 질문에 대한 답을 해 봅니다.

 

학습 목표

문자열이 저장되어 있는 방식에 근거해서 문자열을 비교하는 방법에 대해 설명할 수 있습니다.

 

핵심 단어

  • 문자열

 

위 코드를 실행하면, 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 네이버커넥트재단