함수의 이름은 곧 기능이다.
call by value:
-->인자로 넘기는 값을 복사해서 새로운 함수에 넘겨주는 방식으로 값의 복사에 의한 함수호출을 의미한다.
특징:값을 복사해서 전다하기 때문에 원본의 값이 변경될 가능성이 없다
문제: 값을 넘겨줄때마다 고비용,복사손실 문제가 발생한다.
Call by reference :
--> 주소값을 인자로 전달하는 함수 호출이다.
특징: 복사손실과 고비용 문제를 해결할수있다.
문제: 원본의 값의 변경이 일어날수있는 문제점이 있다.
--> 원래변수에 있는 데이터는 변경되지않는다.
함수외부에 선언된 변수의 값에 대한 접근이 가능하며,포인터연산에 의해서
값을 변경할수있다.포인터연산의 위험성이 존재함
함수에 const 를 활용하는 방법:
주소 혹은 값을 바꾸지 않기 위하여 const 를 사용한다.
const int *a; --> 값을 바꾸지않는다.
int const *a; --> 주소를 바구지않는다.
********************************************************************
1. 함수 포인터를 사용하면 함수를 데이터처럼 전달할수있다.
2. 함수 포인터는 * 와 & 연산자가 필요없는 유일한 포인터지만 ,원하면 사용가능하다.
3. 모든함수의 이름은 함수에 대한 포인터이다.
4. 함수 포인터의 배열을 사용하면 데이터형에따라 다른 함수를 실행한다.
5. 인자의 개수가 바뀔수 있는 함수를 "가변 인자함수" 라고한다.