리루
재귀는 자신의 보다 작은 인스턴스들로 무엇인가를 정의할 수 있게 하는 강력한 원리이다. 재귀함수는 자신을 호출하는 함수이다. -->팩토리얼int fact(int n){ if(n 팩토리얼F(n,a) = a (if n=0, n=1, a는 기본 1) = F(n-1,na) (if n>1) int facttail(int n, int a){ if(n
Code SegmentData SegmentStack Heap[메모리 구조] 입력 매개변수리턴값임시기억장소상태정보저장출력 매개변수[활성 레코드의 메모리 구조] - 코드 영역에는 프로그램이 실행될 때 수행되는 기계어가 들어간다.- 정적 자료 영역에는 전역변수와 static local variable 같이 프로그램이 실행되는 동안 항상 존재하는 자료가 들어간다.- 힙은 malloc 함수를 통해 할당되는 메모리처럼 동적으로 할당되는 메모리 공간이다.- 스택에는 함수 호출 관련 정보가 들어간다.- 관례상 합 영역은 프로그램 메모리의 한쪼 끝에서 위로 커져가고, 스택은 반대로 끝에서 아래로 커져간다. - C 프로그램에서 함수가 호출될 때 호출과 관련된 정보를 보존하기 위해 스택에서 메모리 블록을 할당 받는다.- ..
함수의 매개변수로서의 포인터 포인터는 C에서 함수 호출의 가장 중요한 부분이다. 가장 중요한 것은 참조 호출(Call-by-reference)이라는 매개변수 전달을 지원하기 위해 포인터가 사용된다는 점이다. 참조호출에서 함수가 전달된 매개변수를 변경했을 때 그 변경은 함수가 리턴한 후에도 지속된다. 매개변수 변경이 함수 내에서만 지속되는 값 호출(Call-By-Value)과 비교해 보라. 또 자료의 변경과 관계없이 많은 양의 자료를 함수에 전달하거나 함수에서 전달받을 때 포인터가 효율적인 수단이 된다. 전체 자료 대신에 포인터만 전달되므로 이 방법은 효율적이다. 참조 호출 매개변수 전달 형식적으로 C는 값 호출만 제공된다. 값 호출 매개변수 전달에서는 함수가 실행될 때 전달된 매개변수의 내부 복사본이 만..