Function(함수)
: 특정한 작업을 수행하는 독립적인 부분
Arguments(인수)
함수를 호출할 때, 전달되는 실제 값
Parameter(매개변수)
함수 정의에서 나열되는 변수
디폴트 매개 변수(default parameter)
인자를 전달하지 않아도 디폴트 값을 대신 넣어주는 기능
- 디폴트 매개 변수는 뒤에서부터 앞쪽으로만 정의할 수 있다.
중복 함수(overloading functions)
같은 이름을 가지는 함수를 여러 개 정의하는 것
- 매개변수 타입 또는 개수가 달라야 함.
- 장점
- 함수 이름의 재사용이 가능
- 주의할 점
- 반환형이 다르더라도 중복 안됨.
인라인 함수(inline function)
함수 호출을 하지 않고 코드를 복사해서 넣는 것
- 함수 본체를 호출한 곳에 삽입
라이브러리 함수(library function)
컴파일러에서 제공하는 함수
- rand(): 0부터 RAND_MAX까지의 난수를 생성하는 함수
- <ctime>
- srand()
함수 원형(fuction prototyping)
컴파일러에게 함수에 대하여 미리 알리는 것
- 헤더 파일로 만드는 것이 좋다.
인자의 전달
call by value
- Parameter가 생성됨
- 변수(객체)의 메모리가 따로 할당됨.
- Argument의 value가 생성된 parameter로 복사됨.
call by pointer
- pointer 사용
- call by value 메카니즘 위에서 동작
- 주소 복사
- call by reference 같은 효과
call by reference
- Parameter가 Argument의 alias가 됨.
- 이름을 하나 더 주는 것
- 무조건 초기화해야 함.
- 함수 인자로만 사용
- 선언문에서만 초기화 가능
- ex)
int i = 0; int &r = i; (O)
int &r; (X) int &r = 10; (X)
- ex)
- 호출된 함수 내에서 parameter 값이 변경되면 호출함수의 argument도 동시에 변경이 됨.
- 복사는 시간이 많이 걸리기 때문에 레퍼런스로 효율성 향상
- 레퍼런스를 통해 변경을 방지하려면 const를 앞에 붙임.
void sub(const int &p) {
p = 0;
}
// → 오류
- 레퍼런스의 경우, 함수 밖에서 const int로 정의된 상수가 함수 매개변수 int &로 들어오면 에러
alias(별명)
- 변수의 alias(별명)를 통해 변수 값을 바꿀 수 있다.
int i;
int *p;
p = &i; // ← 실행문의 &는 주소 생성 연산자
int &r = i; // ← 선언문의 &는 reference 선언
i = 1;
*p = 2; // ← *p는 i의 alias
r = 3 // ← r은 i의 alias
strcp() 함수
문자열을 복사하는 함수
- NULL 문자(’\0’) 만날 때까지만 복사
main() 함수의 parameters
- argc
- 명령어 자체와 모든 argument의 개수
- argv
- 명령어 및 모든 argument의 문자열을 가리키는 포인터의 배열
- argc 개수 만큼의 문자열을 가리키는 포인터를 가진다.
- argv 배열의 크기가 argc
728x90
반응형
'C++' 카테고리의 다른 글
[C++] Expression (0) | 2024.04.30 |
---|---|
[C++] Make Utility (0) | 2024.04.30 |
[C++] Types (0) | 2024.04.29 |
[C++] Control Structures (0) | 2024.04.29 |
[C++] Array (0) | 2024.04.29 |