안녕하세요 길벗수험서 운영팀입니다.
main()에서 선언되어도 지역 변수입니다.
main() 밖, main과 같이 여백 없이 왼쪽 끝단에서 선언되어야 전역 변수입니다.
교재 285쪽 40번 문제의 Top과 같은 변수가 전역 변수에 해당합니다.
본래 일반 변수를 인수로 사용하여 함수를 호출하면 변수에 저장된 값만 전달이 됩니다.
함수로 넘어간 값은 지지고 볶고 한다고 해도 변수의 값이 변경될 일은 없죠.
전역 변수를 함수에서 수정한다거나,
메모리의 주소를 전달하여 메모리의 값을 변경하게 되는 경우에는 main()으로 돌아와서도 변경된 값에 영향을 받게 되는 것입니다.
즉 해당 문제에서는 a[] 가 저장된 메모리의 위치를 전달하였고, 함수에서는 그 위치의 값들을 직접 수정했기 때문에
돌아와서 a[]의 값들을 다시 조회해보니 해당 위치의 메모리에는 변경된 값이 있었다... 가 되는 것이죠.
행복한 하루되세요 :)
-
관리자2022-07-19 20:21:17
안녕하세요 길벗수험서 운영팀입니다.
main()에서 선언되어도 지역 변수입니다.
main() 밖, main과 같이 여백 없이 왼쪽 끝단에서 선언되어야 전역 변수입니다.
교재 285쪽 40번 문제의 Top과 같은 변수가 전역 변수에 해당합니다.
본래 일반 변수를 인수로 사용하여 함수를 호출하면 변수에 저장된 값만 전달이 됩니다.
함수로 넘어간 값은 지지고 볶고 한다고 해도 변수의 값이 변경될 일은 없죠.
전역 변수를 함수에서 수정한다거나,
메모리의 주소를 전달하여 메모리의 값을 변경하게 되는 경우에는 main()으로 돌아와서도 변경된 값에 영향을 받게 되는 것입니다.
즉 해당 문제에서는 a[] 가 저장된 메모리의 위치를 전달하였고, 함수에서는 그 위치의 값들을 직접 수정했기 때문에
돌아와서 a[]의 값들을 다시 조회해보니 해당 위치의 메모리에는 변경된 값이 있었다... 가 되는 것이죠.
행복한 하루되세요 :)