asdasd7722   2년 전

배열을 선언한 위치에 따라 왜 결과가 맞고 틀린 게 다른지 모르겠어요

출력은 둘 다 잘 되는데..

알려주실 선생님 계신가요?

djm03178   2년 전

지역으로 선언한 배열은 초기화가 되어있지 않기 때문에 문자열의 길이를 넘어선 나머지 부분에는 무슨 값이 들어있을지 모릅니다.

tjdahr25   2년 전

메모리 heap영역과 stack영역에 대해서 조금 공부하시면 좋을 것 같습니다.

그리고 어느 부분에서 선언하든지 항상 초기화하는 습관을 들여놓으시면 좋을 것 같아요.

(memset이든, for로 하든)

asdasd7722   2년 전

초기화하니까 지역변수로 썼을때도 잘 되네요 감사합니다!

추가적으로 질문하나 드리자면

배열을 전부 NULL값으로 초기화하고 예를 들어 scanf로 "baek"을 받으면

arr[0]~arr[3]까지 알파벳이 들어가고 arr[4]=NULL, 나머지 값들은 처음 초기화한 NULL이 그대로 들어있는건가요? 

djm03178   2년 전

네, 그렇습니다.

asdasd7722   2년 전

감사합니다!

댓글을 작성하려면 로그인해야 합니다.