함수의 호출과 반환에서 포인터를 이용한 인수 전달 방법에 call-by-pointer(return-by-pointer)을 사용할 수 있다.
함수 호출 시 인수값을 복사하지않고, 인수가 저장된 곳의 주소(정보)를 전달하기 때문에 시간 부담이 적으며 메모리 공간 사용도 효율적임. 호출된 함수에서는 포인터를 사용하여 간접참조로 인수 내용을 직접 변경할 수 있음.
call-by-reference(return-by-reference)방식의 경우 변수 이름을 직접 사용할 수 있어 &나 *와 같은 연산자를 별도로 사용하지 않아도 되는 장점이 있다.
( &: 변수나 함수의 주소를 찾아낼 때 사용, *: 포인터가 가리키고 있는 곳의 값을 읽거나 쓸 때 사용)
/// call-by-pointer(return by value) 예시
double average(int *pi, int *pj)
{
double avg;
avg= (*pi + *pj)/2.0;
return avg;
}
int main(int argc, char *argv[])
{
int x, y;
double d;
x = 3;
y = 5;
d = average(&x, &y);
printf("Average: %f\n", d);
return 0;
}
///call-by-reference 예시
void average(int &i, int &j, double &avg)
{
avg = (i+j)/2.0;
}
int main(int argc, char *argv[])
{
int x, y;
double d;
x = 3;
y = 5;
d = average(x, y, avg);
printf("Average: %f\n", avg);
return 0;
}
'Back-end > c,c++' 카테고리의 다른 글
C++ 상속 멤버함수 (0) | 2024.01.08 |
---|---|
접근 지정자 protected 와 private의 차이점 (0) | 2024.01.05 |
캡슐화란? 캡슐화의 장점 - 데이터 추상화, 정보 보호, 정보 은닉 (0) | 2024.01.01 |
time()함수와 performance counter (1) | 2023.12.31 |
[C, C++] rand()함수의 난수 생성과 OR연산으로 비트수 확장 (0) | 2023.12.30 |