functions c with types examples
사용과 함께 C ++의 함수 유형.
지금까지 이전 튜토리얼에서 변수, 스토리지 클래스, 연산자, 배열, 문자열 등과 같은 C ++의 다양한 개념을 보았습니다.
이 튜토리얼에서는 계속해서 함수의 개념에 대해 논의 할 것입니다. 함수는 메서드, 서브 루틴 또는 프로 시저라고도합니다.
=> 여기에서 광범위한 C ++ 교육 자습서 시리즈를 읽어보십시오.
학습 내용 :
- 함수를 어떻게 정의합니까?
- C ++의 함수 유형
- 함수 선언
- 기능 정의
- 함수 호출
- 공식 및 실제 매개 변수
- 반환 값
- 무효 기능
- 함수에 매개 변수 전달
- 기본 매개 변수
- 상수 매개 변수
- 인라인 함수
- 함수에서 구조체 사용
- 결론
- 추천 도서
함수를 어떻게 정의합니까?
함수는 특정 작업을 수행하기 위해 함께 조합 된 일련의 문입니다. 반복되는 작업을 수행하는 문이나 인쇄 등과 같은 일부 특수 작업을 수행하는 문일 수 있습니다.
함수를 갖는 한 가지 용도는 코드를 함수라고하는 더 작은 단위로 분할하여 코드를 단순화하는 것입니다. 함수를 사용하는 또 다른 아이디어는 동일한 코드를 반복해서 작성하지 않아도된다는 것입니다. 우리는 단지 하나의 함수를 작성한 다음 동일한 명령문 세트를 반복해서 작성하지 않고도 필요할 때 호출하면됩니다.
C ++의 함수 유형
C ++에는 아래와 같이 두 가지 유형의 함수가 있습니다.
내장 기능
내장 함수는 라이브러리 함수라고도합니다. 이것들은 C ++에서 제공하는 함수이며 우리가 직접 작성할 필요는 없습니다. 코드에서 이러한 함수를 직접 사용할 수 있습니다.
이러한 함수는 C ++의 헤더 파일에 있습니다. 예를 들어 ,는 각각 내장 수학 함수와 문자열 함수가있는 헤더입니다.
프로그램에서 내장 함수를 사용하는 예를 살펴 보겠습니다.
#include #include using namespace std; int main() { string name; cout << 'Enter the input string:'; getline (std::cin, name); cout << 'String entered: ' << name << '!
'; int size = name.size(); cout<<'Size of string : '< 산출:
입력 문자열 입력 : 소프트웨어 테스팅 도움말
입력 된 문자열 : 소프트웨어 테스트 도움말!
끈의 크기 : 21
여기에서는 헤더와. 데이터 유형 및 기타 입력 / 출력 함수는 라이브러리에서 정의됩니다. getline, size와 같이 사용되는 문자열 함수는 헤더의 일부입니다.
사용자 정의 함수
C ++는 사용자가 자신의 함수를 정의 할 수도 있습니다. 사용자 정의 함수입니다. 프로그램의 어느 곳에서나 함수를 정의한 다음 코드의 어느 부분에서나 이러한 함수를 호출 할 수 있습니다. 변수와 마찬가지로 사용하기 전에 선언해야하며 함수도 호출하기 전에 선언해야합니다.
사용자 정의 함수에 대해 자세히 살펴 보겠습니다.
사용자 정의 함수 (또는 단순히 함수)의 일반 구문은 다음과 같습니다.
return_type functionName(param1,param2,….param3) { Function body; }
따라서 위에 표시된 것처럼 각 기능에는 다음이 있습니다.
- 반환 유형 : 특정 작업을 수행 한 후 함수가 호출 함수로 반환하는 값입니다.
- functionName : 함수 이름을 지정하는 데 사용되는 식별자입니다.
- 매개 변수 목록 : 위 구문에서 param1, param2,… paramn으로 표시됩니다. 함수 호출이 수행 될 때 함수에 전달되는 인수입니다. 매개 변수 목록은 선택 사항입니다. 즉, 매개 변수가없는 함수를 가질 수 있습니다.
- 기능 본문 : 특정 작업을 수행하는 문 그룹입니다.
이미 언급했듯이 함수를 사용하기 전에 '선언'해야합니다.
함수 선언
함수 선언은 함수의 반환 유형, 함수에서 사용하는 매개 변수 수 및 데이터 유형에 대해 컴파일러에 알려줍니다. 함수의 매개 변수 이름을 포함하여 선언은 선택 사항입니다. 함수 선언은 함수 프로토 타입이라고도합니다.
참조를 위해 아래 함수 선언의 몇 가지 예를 제공했습니다.
int sum(int, int);
위의 선언은 두 개의 정수를 매개 변수로 사용하고 정수 값을 반환하는 함수 'sum'입니다.
void swap(int, int);
이것은 스왑 함수가 int 유형의 두 매개 변수를 취하고 값을 리턴하지 않으므로 리턴 유형이 무효임을 의미합니다.
void display();
함수 디스플레이는 매개 변수를 취하지 않으며 어떤 유형도 반환하지 않습니다.
기능 정의
함수 정의에는 함수 선언에 포함 된 모든 것이 포함되며 추가로 중괄호 ({})로 묶인 함수 본문도 포함됩니다.
또한 이름이 지정된 매개 변수도 있어야합니다. 함수가 호출되면 프로그램 제어가 함수 정의로 전달되어 함수 코드가 실행될 수 있습니다. 함수 실행이 완료되면 컨트롤이 함수가 호출 된 지점으로 다시 전달됩니다.
위의 스왑 함수 선언에 대한 정의는 다음과 같습니다.
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
함수의 선언과 정의는 함께 할 수 있습니다. 참조하기 전에 함수를 정의하면 별도의 선언이 필요하지 않습니다.
함수를 설명하기 위해 완전한 프로그래밍 예제를 살펴 보겠습니다.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping: '; cout<<'a = '< 함수 호출 프로그램에 함수가있을 때 요구 사항에 따라이 함수를 호출하거나 호출해야합니다. 함수가 호출되거나 호출 될 때만 함수는 원하는 결과를 제공하기 위해 명령문 세트를 실행합니다.
이 함수는 프로그램의 어느 곳에서나 호출 할 수 있습니다. 프로그램이 둘 이상의 함수를 사용하는 경우 주 함수 또는 다른 함수에서 호출 할 수 있습니다. 다른 함수를 호출하는 함수를 '호출 함수'라고합니다.
위의 숫자 스와핑 예에서 스왑 함수는 주 함수에서 호출됩니다. 따라서 주 함수는 호출 함수가됩니다.
공식 및 실제 매개 변수
우리는 함수에 대한 매개 변수를 가질 수 있다는 것을 이미 보았습니다. 함수 매개 변수는 함수 이름 뒤에 오는 매개 변수 목록으로 함수 정의에 제공됩니다. 함수가 호출 될 때 이러한 실제 값을 사용하여 함수가 작업을 수행 할 수 있도록 이러한 매개 변수의 실제 값을 전달해야합니다.
함수 정의에 정의 된 매개 변수가 호출됩니다. 공식 매개 변수 . 실제 값인 함수 호출의 매개 변수가 호출됩니다. 실제 매개 변수.
위의 숫자 교환 예에서 형식 및 실제 매개 변수에 대한 주석을 작성했습니다. 호출 함수, 즉 main에서 두 정수의 값을 읽고 스왑 함수에 전달합니다. 이것은 실제 매개 변수입니다.
함수 정의의 첫 번째 줄에서 이러한 매개 변수의 정의를 볼 수 있습니다. 이것은 공식적인 매개 변수입니다.
형식 및 실제 인수의 유형이 일치해야합니다. 형식 및 실제 매개 변수의 순서도 일치해야합니다.
반환 값
함수가 의도 한 작업을 수행하면 결과를 호출 함수에 반환해야합니다. 이를 위해 함수의 반환 유형이 필요합니다. 함수는 호출 함수에 단일 값을 반환 할 수 있습니다. 함수의 반환 유형은 함수 프로토 타입과 함께 선언됩니다.
반환 유형을 보여주기 위해 두 개의 숫자를 추가하는 예를 살펴 보겠습니다.
#include using namespace std; int sum(int a, int b){ return (a+b); } int main() { int a, b, result; cout<>a>>b; result = sum(a,b); cout<<'
Sum of the two numbers : '< 산출:
추가 할 두 개의 숫자를 입력하십시오. 11 11
두 숫자의 합 : 22
위의 예에는 두 개의 정수 매개 변수를 취하고 정수 유형을 반환하는 함수 합계가 있습니다. 주 함수에서는 콘솔 입력에서 두 개의 정수를 읽어서 sum 함수에 전달합니다. 반환 유형이 정수이므로 LHS에 결과 변수가 있고 RHS는 함수 호출입니다.
함수가 실행되면 함수 합계가 반환하는 식 (a + b)이 결과 변수에 할당됩니다. 함수의 반환 값이 사용되는 방식을 보여줍니다.
무효 기능
우리는 함수의 일반적인 구문에 정의 된 반환 유형이 필요하다는 것을 보았습니다. 그러나 값을 반환하지 않는 함수가있는 경우 반환 유형으로 무엇을 지정합니까? 대답은 함수가 값을 반환하지 않음을 나타 내기 위해 값이없는 'void'유형을 사용한다는 것입니다.
이 경우 함수를 'void function'이라고하며 프로토 타입은 다음과 같습니다.
void functionName (param1, param2,… .param 3);
노트 : 'return'이라는 문구를 포함하는 것이 좋습니다. 명확성을 위해 void 함수의 끝에.
함수에 매개 변수 전달
우리는 이미 실제 및 형식 매개 변수의 개념을 보았습니다. 또한 실제 매개 변수가 형식 매개 변수에 의해 수신되는 함수에 값을 전달한다는 것을 알고 있습니다. 이를 매개 변수 전달이라고합니다.
C ++에서는 아래에 설명 된대로 매개 변수를 전달하는 특정 방법이 있습니다.
가치로 전달
앞서 논의한 두 정수를 교환하는 프로그램에서 우리는 main에서 정수 'a'와 'b'를 읽고이를 swap 함수에 전달하는 것을 보았습니다. 이것이 가치 전달 기법입니다.
매개 변수 전달의 값에 의한 전달 기법에서는 실제 매개 변수 값의 사본이 형식 매개 변수로 전달됩니다. 이로 인해 실제 및 형식 매개 변수는 다른 메모리 위치에 저장됩니다. 따라서 함수 내부의 형식 매개 변수에 대한 변경 사항은 함수 외부에 반영되지 않습니다.
우리는 두 숫자의 스와핑을 다시 한번 방문함으로써 이것을 더 잘 이해할 수 있습니다.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping inside Swap:
'; cout<<'a = '< 참조로 통과 참조에 의한 전달은 매개 변수를 함수에 전달하기 위해 C ++에서 사용하는 또 다른 기술입니다. 이 기술에서는 실제 매개 변수의 사본을 전달하는 대신 실제 매개 변수에 대한 참조를 전달합니다.
노트 : 참조는 변수의 별칭이거나 단순한 단어로 변수에 부여되는 또 다른 이름입니다. 따라서 변수와 참조는 동일한 메모리 위치를 공유합니다. 이후 튜토리얼에서 참조를 자세히 배웁니다.
참조 기법에 의한 전달에서는 실제 매개 변수의 이러한 참조를 사용하므로 결과적으로 함수의 형식 매개 변수에 대한 변경 사항이 호출 함수에 다시 반영됩니다.
독자가 개념을 더 잘 이해할 수 있도록 스왑 기능을 수정합니다.
#include #include using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< 따라서 스왑 함수의 형식 매개 변수에 대한 변경 사항은 주 함수에 반영되고 스왑 된 값을 얻습니다.
포인터로 전달
C ++에서는 포인터 변수를 사용하여 매개 변수를 함수에 전달할 수도 있습니다. 포인터에 의한 전달 기술은 참조에 의한 전달과 동일한 결과를 생성합니다. 즉, 형식 및 실제 매개 변수가 동일한 메모리 위치를 공유하고 함수의 변경 사항이 호출 함수에 반영됩니다.
참조에 의한 전달에서는 매개 변수의 참조 또는 별칭을 처리하는 반면 포인터에 의한 전달 기술에서는 포인터 변수를 사용하여 매개 변수를 전달한다는 유일한 차이점이 있습니다.
포인터 변수는 포인터 변수가 특정 변수를 가리키는 참조와 다르며 참조와 달리 가리키는 변수를 변경할 수 있습니다. 이후 튜토리얼에서 포인터에 대한 세부 사항을 살펴볼 것입니다.
Pass by Pointer 기술을 보여주기 위해 두 정수의 스와핑을 다시 제시합니다.
#include #include using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< 기본 매개 변수 C ++에서는 함수 매개 변수에 대한 기본값을 제공 할 수 있습니다. 이 경우 함수를 호출 할 때 매개 변수를 지정하지 않습니다. 대신이 함수는 프로토 타입에 제공된 기본 매개 변수를 사용합니다.
다음 예제는 기본 매개 변수의 사용을 보여줍니다.
#include #include using namespace std; int mathoperation(int a, int b = 3, int c = 2){ return ((a*b)/c); } int main() { int a,b,c; cout<>a>>b>>c; cout< 산출:
a, b 및 c에 대한 값 입력 : 10 4 6
1 개의 인수로 mathoperation 호출 : 15
2 개의 인수를 사용하여 mathoperation 호출 : 20
3 arg : 6으로 mathoperation 호출
코드 예제에서 볼 수 있듯이, 두 개의 매개 변수에 대한 기본값을 제공 한 세 개의 매개 변수를 가져 오는 함수 'mathoperation'이 있습니다. 그런 다음 주 함수에서 다른 인수 목록을 사용하여이 함수를 세 번 호출합니다.
첫 번째 호출은 인수가 하나뿐입니다. 이 경우 다른 두 인수는 기본값을 갖습니다. 다음 호출은 두 개의 인수를 사용합니다. 이 경우 세 번째 인수는 기본값을 갖습니다. 세 번째 호출에는 세 개의 인수가 있습니다. 이 경우 세 가지 인수를 모두 제공 했으므로 기본값이 무시됩니다.
기본 매개 변수를 제공하는 동안 항상 맨 오른쪽 매개 변수부터 시작합니다. 또한 중간에 매개 변수를 건너 뛰고 다음 매개 변수에 대한 기본값을 제공 할 수 없습니다.
이제 프로그래머의 관점에서 중요한 몇 가지 특수 함수 관련 개념으로 이동하겠습니다.
상수 매개 변수
또한 'const'키워드를 사용하여 상수 매개 변수를 함수에 전달할 수 있습니다. 매개 변수 또는 참조가 const이면 함수 내에서 변경할 수 없습니다.
const 매개 변수를 non-const 형식 매개 변수에 전달할 수 없습니다. 그러나 const 및 non-const 매개 변수를 const 형식 매개 변수에 전달할 수 있습니다.
마찬가지로, const return-type도 가질 수 있습니다. 이 경우에도 반환 유형을 수정할 수 없습니다.
const 참조를 사용하는 코드 예제를 보겠습니다.
#include #include using namespace std; int addition(const int &a, const int &b){ return (a+b); } int main() { int a,b; cout<>a>>b; cout<<'a = '< 산출:
교체 할 두 개의 숫자를 입력하십시오. 22 33
a = 2 b = 33
추가 결과 : 55
위의 프로그램에는 const 형식 매개 변수가 있습니다. 실제 매개 변수는 우리가 성공적으로 전달한 상수가 아닌 일반 변수입니다. 형식 매개 변수는 const이므로 함수 내에서 수정할 수 없습니다. 그래서 우리는 더하기 연산을 수행하고 값을 반환합니다.
함수 내에서 a 또는 b의 값을 수정하려고하면 컴파일러에서 오류가 발생합니다.
인라인 함수
함수를 호출하기 위해 내부적으로는 함수에 제어를 전달하기 전에 스택에 프로그램의 상태를 저장하는 컴파일러가 필요하다는 것을 알고 있습니다.
함수가 반환되면 컴파일러는 프로그램 상태를 다시 검색하고 남은 위치부터 계속해야합니다. 이로 인해 오버 헤드가 발생합니다. 따라서 C ++에는 몇 개의 문으로 구성된 함수가있을 때마다 인라인으로 확장 할 수있는 기능이 있습니다. 이것은 함수를 인라인으로 만들어 수행됩니다.
따라서 인라인 함수는 런타임에 확장되는 함수이므로 함수를 호출하고 스택 수정을 수행하는 노력을 줄여줍니다. 그러나 함수를 인라인으로 만들더라도 컴파일러는 런타임에 확장된다는 것을 보장하지 않습니다. 즉, 함수를 인라인으로 만들지 여부는 컴파일러에 완전히 의존합니다.
일부 컴파일러는 더 작은 함수를 감지하고 인라인으로 선언되지 않은 경우에도 인라인으로 확장합니다.
다음은 인라인 함수의 예입니다.
inline int addition(const int &a,const int &b){ return (a+b); }
위와 같이 함수를 인라인으로 만들기 위해 함수 정의 앞에 키워드 'inline'을 사용합니다.
함수에서 구조체 사용
일반 변수를 매개 변수로 전달하는 것과 유사한 방식으로 구조 변수를 매개 변수로 전달할 수 있습니다.
이것은 다음 예제에 나와 있습니다.
Perl 인터뷰 질문 및 답변 pdf
#include #include using namespace std; struct PersonInfo { int age; char name(50); double salary; }; void printStructInfo(PersonInfo p) { cout<<'PersonInfo Structure:'; cout<<'
Age:'< p.age; cout <> p.salary; printStructInfo(p); }
산출:
이름 입력 : Vedang
나이 입력 : 22
급여 입력 : 45000.00
PersonInfo 구조 :
나이 : 22
이름 : Vedang
급여 : 45000

위의 프로그램에서 볼 수 있듯이 다른 변수와 유사한 방식으로 기능하는 구조를 전달합니다. 표준 입력에서 구조 멤버의 값을 읽은 다음 구조를 표시하는 함수에 구조를 전달합니다.
결론
이것은 C ++ 함수의 기본에 관한 것입니다.
앞으로 나올 튜토리얼에서 C ++의 정적 함수에 대해 자세히 살펴볼 것입니다.
=> 여기에서 완전한 C ++ 무료 교육 시리즈를 확인하십시오.
추천 도서