-
함수의 인자
[학습내용] [학습목표] ▪ 매개변수
▪ 다양한 인자 전달▪ 함수의 매개변수 전달 방법에 대해 설명할 수 있다.
▪ 매개변수로 포인터, 배열, 구조체 등을 전달하는 방법을 알고 사용할 수 있다.매개변수
1. 개념 이해
함수에 전달하는 값 [매개변수(Parameter), 인자(Argument)]
▪ 함수 호출 시 함수로 값을 전달하는 목적으로 이용
형식매개변수와 실매개변수
형식매개변수(Formal Parameter) 실매개변수(Real Parameter) 함수 정의에서 기술되는 매개변수 목록 함수 호출에서 기술되는 값 , 인자(Argument) #include <stdio.h> void add( int a, int b){ //형식매개변수 a += b; printf(“%d”, a); } int main(){ int x=5, y=3; add(x, y); //실매개변수 return 0; }
2. 호출 방식
Call by Value(값에 의한 호출) 인자의 값을 함수 정의에 있는 매개변수로 복사해서 전달하는 방식 #include <stdio.h> void add( int a, int b){ a += b; printf(“ %d ”, a); } int main(){ int a=5, b=3; add(a, b); printf(“ %d ”, a); return 0; }
Call by Reference(참조에 의한 호출) ▪ 인자의 참조값을 함수 정의에 있는 매개변수로 전달하는 방식
▪ 변수의 값을 복사해서 전달하는 대신 변수의 주소를 전달하는 방식#include <stdio.h> void add( int* a, int* b){ *a += *b; printf(“ %d ”, *a); } int main(){ int a=5, b=3; add(&a, &b); printf(“ %d ”, a); return 0; }
Call by Reference(참조에 의한 호출) ▪ 호출된 함수에서 값을 호출한 곳으로 리턴의 용도로 사용 가능 #include <stdio.h> int add( int a, int b){ a += b; printf(“ %d ”, a); return a; } int main(){ int a=5, b=3; a = add(a, b); printf(“ %d ”, a); return 0; } ------------------------------------------- #include <stdio.h> int add( int a, int b){ a += ++b; printf(“ %d ”, a); return a; } int main(){ int a=5, b=3; a = add(a, b); printf(“ %d %d ”, a,b); return 0; } ------------------------------------------- #include <stdio.h> void add( int* a, int* b){ *a += ++*b; printf(“ %d ”, *a); } int main(){ int a=5, b=3; add(&a, &b); printf(“ %d %d ”, a, b); return 0; }
다양한 인자 전달
1. 배열 전달
▪ 배열은 포인터 전달 방법을 이용
▪ 함수의 매개변수는 배열의 원소에 대한 포인터형으로 선언
1. 구조체 전달
struct tax { int value; int price; double rate; }; void sub(struct tax a ){ …· } int main(){ struct tax elec={300, 2700, 5.7]; sub( elec ); return 0; }
구조체 전달 시 포인터 전달의 장점 ▪ 주소 보관을 위한 4바이트만 사용함 struct tax { int value; int price; double rate; }; void sub(struct tax *a ){ …. } int main(){ struct tax elec={300, 2700, 5.7]; sub( &elec ); return 0; }
#include <stdio.h> typedef struct tax { int value; int price; double rate; }TAX; void sub( TAX *a ){ printf("%f", a->value*a-> price*a->rate); } int main(){ TAX elec={300, 2700, 5.7}; sub( &elec ); return 0; }
학습정리
1. 매개변수
▪ 형식매개변수란 함수의 원형에 기술되는 매개변수 리스트를 말함
▪ 실매개변수는 함수 호출 시 기술되는 매개변수를 말함
▪ 값에 의한 호출은 값만을 전달하고 함수에서 복사해서 사용함
▪ 참조에 의한 호출은 참조할 정보, 즉 주소를 전달하여 함수에서 주소로 참조하는 전달 방식임
2. 다양한 인자 전달
▪ 배열을 함수의 매개변수로 전달할 때는 배열명을 전달하여 배열의 시작 주소가 전달되도록 함
▪ 구조체는 구조체 자체를 전달하는 것보다 구조체 시작 주소를 전달하여 함수에서 주소로 참조하도록 하는 것이 좋음
▪ 구조체나 구조체 배열을 참조에 의한 호출로 매개변수를 전달하면 메모리 사용에 유리함
'Blog > JAVA기반 스마트웹 개발2021' 카테고리의 다른 글
프로그래밍 언어 활용 part 1 - 배열 포인터 처리 (0) 2021.08.01 프로그래밍 언어 활용 part 1 - 스토리지 클래스 (0) 2021.08.01 프로그래밍 언어 활용 part 1 - 공용체와 열거체 (0) 2021.07.31 프로그래밍 언어 활용 part 1 - 구조체 (0) 2021.07.31 프로그래밍 언어 활용 part 1 - 포인터와 문자열 (0) 2021.07.31 댓글