ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C] 문자열 저장 : 메모리구조
    언어/C 2024. 5. 30. 13:04

    boostcamp Q.10

    문제 먼저 풀고 오세요.


    C 언어 계열에서 문자열(string)을 메모리에 저장하는 방식에 대한 설명.

     

    1번

    문자열은 메모리에 저장될 때 일반적으로 문자 배열로 표현됩니다. 문자열은 연속된 메모리 공간에 문자들이 저장되며, 문자열의 끝을 나타내는 특별한 문자로 null 문자('\0')가 사용됩니다.

     

    예를 들어, "Hello"라는 문자열을 저장하려면 다음과 같이 문자 배열을 선언 :

    char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
    
    char str[] = "Hello";

    여기서 중요한 점은 문자열의 끝에 null 문자('\0')가 자동으로 추가된다는 것입니다. 이 null 문자는 문자열의 끝을 나타내며, C 언어에서 문자열 처리 함수가 문자열의 끝을 판단하는 데 사용됩니다.

     

    따라서 1번 정답.

     

    2번

    문자열은 문자(char)의 배열로 표현되며, 각 문자는 연속된 메모리 위치에 저장됩니다. 이러한 특성으로 인해 문자열을 순회하거나 특정 인덱스의 문자에 접근하기가 쉽습니다. 예를 들어, "Hello"라는 문자열을 저장할 때, 메모리에는 'H', 'e', 'l', 'l', 'o'가 차례대로 저장되며, 각 문자는 연속된 메모리 주소를 가집니다. 마지막으로 null 문자('\0')가 추가되어 문자열의 끝을 나타냅니다.

    따라서 2번 정답.

     

    3번

    문자열은 문자열의 끝을 나타내기 위해 널 문자('\0')로 끝나는 문자열입니다.

    따라서 문자열이 포함하는 메모리 공간은 문자 개수에 각 문자의 크기를 곱한 값에 널 문자를 추가하기 위한 1바이트 크기를 더한 것과 같습니다.

    예를 들어, "Hello"라는 문자열을 저장하려면 다섯 개의 문자('H', 'e', 'l', 'l', 'o')와 널 종단 문자('\0')가 필요합니다. 따라서 문자열 "Hello"는 총 6바이트의 메모리를 차지합니다.

    따라서 3번 정답.

     

    4번

    C 언어에서 문자열은 사실상 문자(char) 배열로 표현됩니다. 따라서 문자열은 문자 배열과 동일한 방식으로 선언, 초기화 및 처리할 수 있습니다.

    따라서 4번 정답.

     

    5번

    무조건 에러가 나는 것은 아니므로 틀렸음. 적절한 문자열 처리, 문자열의 인코딩을 올바르게 처리하면 됨.

    따라서 5번 오답.

Designed by Tistory.