프로그래밍

 3198, 1/160 회원가입  로그인  
   h@cking2013
   프로시저와 함수의 차이

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6480 [복사]


안녕하세요.
공부하다 보니 헷갈리는 게 있어서 질문합니다.
windows 구조와 원리(정덕영)라는 책에서 처음으로 '프로시저'라는 용어를 접해서 검색해 보았습니다. 그 결과 프로시저는 반환값이 없고, 함수는 반환값이 있다......... 라는 것 같더군요.
하지만 책에서는
/*
int procedure1()
{
..........................
}
main()
{
   ...
   procedure1();
   ...
}
c언어를 사용하여 위와 같은 실행 코드를 구성하였을 때 procedure1()과 main()을 프로시저라 부른다.
*/
라고 설명되어 있었습니다.
그런데 위의 소스에서의 procedure1는 int형 반환값을 가졌으니, 함수 아닌가요?
프로시저와 함수의 정확한 뜻과 차이점이 궁금합니다.

  Hit : 6682     Date : 2014/07/30 07:14



    
kumi123 프로시저는 return address 를 남기지 않지만 함수는 남깁니다.. procedure는 스택에 필요한 값만 저장을 하고 이동을 하지만, 함수는 전부다 플래그를 남긴다음 이동을 합니다.. 둘의 큰 차이는 우선 속도 문제 겟지요... 이동시 플래그를 적게 남길시에 아무튼 속도가 올라가므로, 위와 같이 정의한 이유는 수학적으로 함수는 반드시 하나의 값이 존재하기 떄문이죠/.. 하지만 c에서는 그냥 함수라 부릅니다..
쉽게 비유하자면, 님이 여행가는 동안 방을 비워줘여.. 친구가 님 방을 쓰는데.. 내가 여행가기 전에 짐을 뺴줘야 하는데 모든 물건을 옮기느냐 , 필요한것만 옮기느냐 의 차이입니다.. 이게 결정적이지요.. 자세한건 컴구조 책보면 나올 겁니다.
2014/08/09  
dreameye "c언어를 사용 위와 같은 실행 코드를 구성하였을 때 procedure1()과 main()을 프로시저라 부른다."
; main(), procedure1() 모두 함수라고 표현해도 맞는 말입니다.
그러나 함수를 좀더 들여다 보면 값을 반환하는 함수가 있고, 값을 반환 하지 않는 함수가 있습니다.
int main() int procedure( int a )
{ {
... ...
return 0; return 0:
} }
위 예제와 같이 함수 리턴 값이 있는 것을 함수라 하고
void main() void procedure( int a )
{ {
... ...
} }
위 예제와 같이 한 함수 내에서 처리가 끝나는 것을 프로시저 합니다.
2014/09/17