Review:함수

Icarus<Wing>·2022년 10월 8일
0

함수

  • 함수란? ->특정한 일을 수행하는 코드의 한 부분이다. 즉, f(x) = y를 생각하면 x라는 argument를 넣어서 f라는 함수를 호출하면 y라는 기능을 수행한다는 것이다.
  • 함수는 재사용 가능해서 몇번이고 main함수내에서 호출할 수 있다.

monolithic programming vs modular programming

  • monolithic programming: main함수에 모든 함수들을 때려박은 것으로, 코드의 줄이 길어지고 가독성이 떨어진다. 또한, 수정할 경우에 모든 코드들을 읽어야한다.

  • modular programming: 헤더파일 또는 소스코드들을 분할 컴파일을 통해 모듈화 작업을 할 수 있다. 이는, 에러가 난 함수를 찾아서 고치기만 하면 되어서 매우 효율적이다.(단, 헤더파일이 중복되면 안되고, cpp파일이 서로 링크가 되어야 한다.)

#include <iostream>

using namespace std;

int add(int a, int b)//called function prototype(or declaration)
{					 //()<-paramater
	int c;
	c = a + b;
	return c;
}
int main()
{
	int x = 10, y = 5;
	int z;
	z = x + y;
	
	add(x,y);//argument(or actual parameter)
	cout << z << endl;

	return 0;
}

함수의 동작 원리

add(x,y)를 호출 -> 제어가 main에서 add로 이동 & argument가 parameter로 복사됨. 즉, x=10이 a로, y=5가 b로 복사 -> 함수 정의부분에서 복사된 a와 b의 값이 c에 저장됨 -> 함수를 반환하면 add의 활성화 레코드(스택 프레임)은 파괴되고 다시 제어가 main으로 이동되면서 반환된 값이 z에 할당됨

함수간의 제어이동은 assembly language의 subroutine그것과 같다. 즉, 함수를 호출하면 분기가 일어나서 제어흐름이 subroutine로 이동한다.

  • main함수내에서 함수에 전달받은 변수들을 argument(or actual parameter)라 한다.
  • 지역변수에 할당된 함수의 변수들을 (formal)parameter라 한다.
profile
모든 코드에는 이유가 있기에 원인을 파악할 때까지 집요하게 탐구하는 것을 좋아합니다.

0개의 댓글