함수의 return값이 없으므로 void를 붙인다고 되어있는데 이게 정확히 무슨 뜻인가요?
b값은 계속 초기화 되므로 return값이 없다는 게 이해 되는데 a값은 초기화 되지않고 누적되므로 return값이 있는 게 아닌가요?
자세하고 쉽게 설명해주시면 감사하겠습니다. (ㅠ_ㅠ)
안녕하세요. 길벗 수험서 운영팀입니다.
기본적으로 main()함수와 더불어 사용자 정의 함수에는 '반환값'이라는 것이 존재합니다.(return값 = 반환값)
해당 함수를 종료함과 동시에 결과값을 상위 프로세스에 전달하는 것을 의미하죠.
문제의 사용자 정의 함수 increase()는 '반환값'이 존재하지 않습니다.
함수가 종료되어도 increase()가 실행된 상위 프로세스인 main()에 돌아오는 값이 없는 것입니다.
다음 문제2번을 풀어보셨다면 아실 수 있습니다.
사용자 정의 함수 prnt()는 상위 프로세스인 main()에서 c=prnt(a,b);를 통해 호출되어 return으로 받은 값을 변수 c에 저장합니다.
반면 문제1번은 main()에서 increase()로 호출할 뿐, 받은 값을 저장하는 형태로 있지 않고,
increase() 함수 내에 return 명령어도 존재하지 않습니다.
일반적으로 사용자 정의 함수를 선언할 때 반환 받을 값의 자료형을 앞에 붙여줍니다.(문제 2번의 'int prnt()'와 같이)
반면 1번은 그러한 반환값이 없기 때문에, 비어있다는 의미인 'void'를 붙여주죠.
----------------------------------------
전역 변수 a와 지역 변수 b는 앞의 return 값과는 조금 무관한 내용입니다.
전역 변수 a는 처음 선언되어 main함수와 increase함수 내에서 추가로 선언하지 않고 사용 가능합니다.
main함수에서 값을 저장하고 increase로 넘어간다고 해서 값이 변경되거나 하지 않죠. 계속 누적할 수 있다는 의미입니다.
반면 지역 변수 b는 increase 함수 내에서 선언되어 increase 함수를 벗어나면 소멸됩니다.
변수 b가 차지하고 있는 메모리가 초기화되는 것이죠. main 함수로 돌아가 b를 사용하는 것도, 다시 increase를 호출해도 기존의 변수 b에 저장되어 있는 값을 찾을 방법이 없습니다.
행복한 하루되세요.^^
-
*2018-09-28 15:40:16
안녕하세요. 길벗 수험서 운영팀입니다.
기본적으로 main()함수와 더불어 사용자 정의 함수에는 '반환값'이라는 것이 존재합니다.(return값 = 반환값)
해당 함수를 종료함과 동시에 결과값을 상위 프로세스에 전달하는 것을 의미하죠.
문제의 사용자 정의 함수 increase()는 '반환값'이 존재하지 않습니다.
함수가 종료되어도 increase()가 실행된 상위 프로세스인 main()에 돌아오는 값이 없는 것입니다.
다음 문제2번을 풀어보셨다면 아실 수 있습니다.
사용자 정의 함수 prnt()는 상위 프로세스인 main()에서 c=prnt(a,b);를 통해 호출되어 return으로 받은 값을 변수 c에 저장합니다.
반면 문제1번은 main()에서 increase()로 호출할 뿐, 받은 값을 저장하는 형태로 있지 않고,
increase() 함수 내에 return 명령어도 존재하지 않습니다.
일반적으로 사용자 정의 함수를 선언할 때 반환 받을 값의 자료형을 앞에 붙여줍니다.(문제 2번의 'int prnt()'와 같이)
반면 1번은 그러한 반환값이 없기 때문에, 비어있다는 의미인 'void'를 붙여주죠.
----------------------------------------
전역 변수 a와 지역 변수 b는 앞의 return 값과는 조금 무관한 내용입니다.
전역 변수 a는 처음 선언되어 main함수와 increase함수 내에서 추가로 선언하지 않고 사용 가능합니다.
main함수에서 값을 저장하고 increase로 넘어간다고 해서 값이 변경되거나 하지 않죠. 계속 누적할 수 있다는 의미입니다.
반면 지역 변수 b는 increase 함수 내에서 선언되어 increase 함수를 벗어나면 소멸됩니다.
변수 b가 차지하고 있는 메모리가 초기화되는 것이죠. main 함수로 돌아가 b를 사용하는 것도, 다시 increase를 호출해도 기존의 변수 b에 저장되어 있는 값을 찾을 방법이 없습니다.
행복한 하루되세요.^^