carisma1010   4년 전

제가 이 문제를 열심히 풀어보았는데, 안풀려서 올려봅니다

안풀리는데 혹시 풀이를 가르쳐주실분 있으시나요?

너무 안풀립니다ㅠㅠ

0_o   4년 전

문자열을 초기화하지 않아서 그렇습니다. 보통 함수 안에서의 변수를 생성하면 쓰레기값(랜덤 값)이 들어가있습니다.

우리가 변수를 선언하면 자료형의 크기만큼 메모리를 할당받습니다.

변수를 선언함과 동시에 임의의 위치에 자료형의 크기만큼의 메모리를 할당해주기때문에 쓰레기값이 들어가있습니다. 

그래서 이를 그대로 출력하면 출처를 알 수 없는 문자가 나옵니다.

해결법은 무엇일까요?

바로 문자열을 전역변수로 선언하거나, 문자열을 선언함과 동시에 초기화거나, 문자열을 선언한 다음 초기화하면 됩니다.

이것들은 함수에서 선언하는 변수와 다른 공간에 저장되어지는데요, 그래서 모든 함수에서 가져다 쓸 수 있는 것입니다.

전역변수들은 코드가 시작할때부터 끝날때까지 사라지지 않기 때문에 메모리가 고정이 되어있습니다.

따라서 컴파일을 할 때 알아서 초기화를 시켜줍니다. 장점은 시간 소모가 없다는 점입니다.

선언할때 초기화는 char A[]={0};로 할 수 있고, 선언한다음 초기화는 반복문으로 해결할 수 있습니다.

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