C++ Char 질문

조회수 546회
#include <iostream>

using namespace std;

int main(void)
{
    char ID[10];

    cin >> ID;
    cout << ID << endl;

    return 0;
}

위와 같이 작성했는데 ID라는 문자배열 크기를 10으로 설정했는데 cin으로 10를 넘는 문자열을 입력했는데 그대로 들어가네요

저 [*]가 정확히 뭘 뜻하는거죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    배열 갯수를 넘게 메모리에 쓰지(buffer overflow) 않도록 프로그래머가 신경을 써 주어야 해요.

    아래 예를 보면요.

    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
        char a = 'a';
        char ID[10];
        char b = 'b';
    
        sprintf(ID, "123456789AB");
        cout << ID << endl;
        cout << a << endl;
        cout << b << endl;
    
        return 0;
    }
    

    ID 갯수를 넘어가게 써지면서, 그 메모리 주변에 있는 변수가 영향을 받게 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)