kemin1910   1년 전

풀다가 도저히 모르겠어서 풀이를 봐버렸습니다. 하지만 풀이를 보아도 이해가 되지 않는 점이 있습니다. 만약 s1이 7자리이고 s2가 5자리라면 코드 23번째 줄에서 B배열은 B[3] ~ B[7]까지만 수가 들어갈 것이고 26번째 코드는 7부터 1까지 반복하는 for문으로 B[2]와 B[1]은 계산이 되면 안됩니다. 하지만 디버깅을 해보니 자동으로 0이 할당되어 있더군요.

다른 코드로 직접 비슷한 환경으로 Debug1과 Debug2와 같이 실행해보았을 때에도 B배열에는 자동으로 0이 할당 되지 않았습니다. 어떻게 이런 일이 가능한 건가요?

yup0927   1년 전

맨 위 코드는 A와 B가 전역 변수로 선언되어 있고, 아래 두 코드는 지역 변수로 선언되어 있습니다.

전역 변수는 지정하지 않을 경우 기본적으로 0으로 초기화가 이루어지며,

지역 변수는 지정하지 않을 경우 알 수 없는 값이 담겨 있게 됩니다.

지역 변수로 선언한 배열을 0으로 모두 초기화하려면 int A[100] = {0, };나 algorithm 헤더의 fill을 사용하시면 됩니다.

kemin1910   1년 전

전역변수와 지역변수의 차이 중 그런 차이가 있는 줄은 처음 알았습니다. 감사합니다.

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