C++프로 그래 밍 에서 함수 에 대한 기본 사용

7004 단어 C++
형식 매개 변수 와 실제 매개 변수
함 수 를 호출 할 때 대부분의 경우 함 수 는 매개 변 수 를 가지 고 있 습 니 다.기조 함수 와 호출 된 함수 사이 에는 데이터 전달 관계 가 있다.앞에서 언급 한 바 와 같이 함 수 를 정의 할 때 함수 명 뒤에 있 는 괄호 의 변수 이름 은 형식 매개 변수(formal parameter,약칭 형 삼)이 고,기조 함수 에서 함 수 를 호출 할 때 함수 명 뒤에 있 는 괄호 의 매개 변수(표현 식 일 수 있 음)를 실제 매개 변수(actual parameter,약칭 실 삼)라 고 한다.
[예]함 수 를 호출 할 때의 데이터 전달.

#include <iostream>
using namespace std;
int max(int x,int y) //      max
{
  int z;
  z=x>y?x:y;
  return(z);
}
int main( )
{
  int a,b,c;
  cout<<"please enter two integer numbers:";
  cin>>a>>b;
  c=max(a,b);//  max  ,     a,b。     c
  cout<<"max="<<c<<endl;
  return 0;
}
운행 상황 은 다음 과 같다.

please enter two integer numbers:2 3L
max=3
실제 참여 에 대한 설명:
1)함 수 를 정의 할 때 지정 한 형 삼 은 함수 호출 이 나타 나 지 않 았 을 때 메모리 의 저장 부 를 차지 하지 않 기 때문에 형식 매개 변수 나 가상 매개 변수 라 고 부 르 며 실제 존재 하 는 데이터 가 아니 라 함수 호출 이 발생 할 때 만 함수 max 의 형 삼 은 실제 인삼 에서 전 달 된 데 이 터 를 받 을 수 있 도록 메모리 유닛 을 분배 합 니 다.호출 이 끝 난 후,형 삼 이 차지 하 는 메모리 단원 도 방출 되 었 다.
2)실제 인삼 은 상수,변수 또는 표현 식 일 수 있 습 니 다.예 를 들 어 max(3,a+b);그러나 a 와 b 에 게 정확 한 값 을 요구 합 니 다.함 수 를 호출 할 때 실제 인삼 의 값 을 형 삼 에 부여 할 수 있 도록 합 니 다.
3)함 수 를 정의 할 때 함수 의 첫 번 째 부분 에 형 삼 의 유형 을 지정 해 야 합 니 다(예시 프로그램의 세 번 째 줄 참조).
4)실 삼 과 형 삼 의 유형 은 같 거나 할당 이 호 환 되 어야 한다.예 4.2 중 실 삼 과 형 삼 은 모두 정형 인 데 이것 은 합 법 적 이 고 정확 하 다.만약 에 실 삼 이 정형 이 고 형 삼 이 실 형 이거 나 반대로 서로 다른 유형의 수치의 할당 규칙 에 따라 전환 된다.예 를 들 어 실 삼 a 의 값 은 3.5 이 고 형 삼 x 는 정형 이 며 3.5 를 정수 3 으로 바 꾼 다음 에 형 삼 b 로 보낸다.문자 형 과 정형 은 서로 통용 할 수 있다.
5)실 삼 변수 가 형 삼 변수 에 대한 데이터 전달 은'값 전달'이다.즉,단 방향 으로 전달 되 고 실 삼 에서 형 삼 에 게 만 전달 되 며 형 삼 에서 실 삼 에 게 전달 되 지 못 한다.함 수 를 호출 할 때 컴 파일 시스템 은 임시로 형 삼 에 게 저장 부 를 분배 합 니 다.
주의:실 삼 단원 과 형 삼 단원 은 서로 다른 단원 입 니 다.다음 그림 은 실 삼 a 와 b 의 값 2 와 3 을 대응 하 는 형 삼 x 와 y 에 전달 하 는 것 을 나타 낸다.

호출 이 끝 난 후,형 삼 단원 이 방출 되 었 고,실 삼 단원 은 여전히 원래 의 값 을 유지 하고 유지 하 였 다.따라서 호출 된 함 수 를 실행 할 때 형 삼 의 값 이 바 뀌 면 기조 함수 에서 실 삼 의 값 을 바 꾸 지 않 습 니 다.예 를 들 어 max 함 수 를 실행 하 는 과정 에서 형 삼 x 와 y 의 값 이 10 과 15 로 변 하면 호출 이 끝 난 후에 도 실 삼 a 와 b 는 2 와 3 이 고 위의 그림 을 보십시오.
함수 의 반환 값
1)함수 의 반환 값 은 함수 중의 return 문 구 를 통 해 얻 을 수 있 습 니 다.return 문 구 는 호출 함수 의 확정 값 을 메 인 함수 로 가 져 옵 니 다.
return 문장 뒤의 괄호 는 받 을 수도 있 고 받 지 않 을 수도 있다.return 뒤의 값 은 표현 식 일 수 있 습 니 다.
2)함수 값 의 유형.함수 에 반환 값 이 있 는 이상 이 값 은 당연히 특정한 유형 에 속 해 야 하 며 함 수 를 정의 할 때 편지 값 의 유형 을 지정 해 야 합 니 다.
3)편지 수치의 유형 과 return 문장의 표현 식 값 이 일치 하지 않 으 면 함수 형식 을 기준 으로 함수 형식 이 반환 값 의 유형 을 결정 합 니 다.수치 형 데 이 터 를 자동 으로 형식 변환 할 수 있 습 니 다.
함수 호출 일반 형식
함수 호출 의 일반적인 형식 은:

     ([    ]);
무 참 함 수 를 호출 하 는 경우'실 참 표 열'은 없 을 수 있 지만 괄호 는 생략 할 수 없습니다.실제 인삼 표 열 에 여러 개의 실제 인삼 이 포함 되 어 있 으 면 각 매개 변수 간 은 쉼표 로 분리 된다.실제 인삼 과 형 삼 의 개 수 는 같 아야 하고 유형 은 일치 해 야 한다(같 거나 할당 호 환).실제 인삼 과 형 삼 은 순서대로 대응 하여 데 이 터 를 일대일 로 전달한다.그러나 실제 인삼 표 에 여러 개의 실제 인삼 이 포함 되 어 있다 면 실제 인삼 의 가 치 를 구 하 는 순서 가 확정 되 지 않 았 다 는 것 을 설명해 야 한다.
함수 호출 방식
함수 가 문장 에서 의 역할 에 따라 다음 과 같은 세 가지 함수 호출 방식 이 있 을 수 있 습 니 다.
(1)함수 문
함 수 를 하나의 문장 으로 호출 하고 함수 에 값 을 가 져 오 라 고 요구 하지 않 으 며 함수 가 일정한 조작 을 완성 하도록 요구 할 뿐이다.예 를 들 어 4.1 의 printstar();
(2)함수 식
함수 가 표현 식 에 나타 나 면 함수 가 표현 식 의 연산 에 참가 할 수 있 도록 정확 한 값 을 가 져 오 라 고 요구 합 니 다.c=2*max(a,b);
(3)함수 매개 변수
함수 호출 은 함수 의 실제 인삼 으로 한다.예:

m=max(a, max(b, c)); //max(b, c)     ,      max         
호출 된 함수 에 대한 성명 과 함수 원형
한 함수 에서 다른 함수(즉 호출 된 함수)를 호출 하려 면 다음 과 같은 조건 이 필요 합 니 다.
우선 호출 된 함 수 는 이미 존재 하 는 함수 여야 합 니 다.
라 이브 러 리 함 수 를 사용 하면 이 파일 의 시작 부분 에\#include 명령 으로 헤더 파일 을 이 파일 에 포함 시 켜 야 합 니 다.
사용자 가 정의 한 함 수 를 사용 하면 이 함 수 는 호출 된 함수(즉,메 인 함수)와 같은 프로그램 단위 에 있 고 위치 가 메 인 함수 에 있 으 면 이 함 수 를 호출 하기 전에 호출 된 함수 에 대해 설명 해 야 합 니 다.
함수 성명(declare)이란 함수 가 정의 되 지 않 은 상황 에서 이 함수 의 관련 정 보 를 컴 파일 시스템 에 미리 알 리 고 컴 파일 이 정상적으로 진행 되도록 하 는 것 입 니 다.
[예]호출 된 함수 에 대해 설명 합 니 다.

#include <iostream>
using namespace std;
int main( )
{
  float add(float x,float y); // add     
  float a,b,c;
  cout<<"please enter a,b:";
  cin>>a>>b;
  c=add(a,b);
  cout<<"sum="<<c<<endl;
  return 0;
}
float add(float x,float y)//  add  
{
  float z;
  z=x+y;
  return (z);
}
운행 상황 은 다음 과 같다.

please enter a, b: 123.68 456.45L
sum=580.13
메모:함수 에 대한 정의 와 성명 은 같은 일이 아 닙 니 다.정 의 는 함수 기능 에 대한 확립 을 말 하 는데 지 정 된 함수 명,함수 유형,형 삼 과 그 유형,함수 체 등 을 포함 하고 완전 하고 독립 된 함수 단위 이다.한편,성명 의 역할 은 함수 의 이름,함수 유형 과 형 삼 의 개수,유형 과 순서(주의,함수 체 포함 하지 않 음)를 컴 파일 시스템 에 알 리 고 함수 호출 문 구 를 컴 파일 할 때 이에 따라 대조 검 사 를 하 는 것 이다(예 를 들 어 함수 명 이 정확 한 지,실제 인삼 과 형 삼 의 유형 과 개수 가 일치 하 는 지).
사실 함수 성명 에서 도 형 삼 명 을 쓰 지 않 고 형 삼 의 유형 만 쓸 수 있다.예 를 들 어

  float add(float, float);
이 함수 성명 은 함수 원형(function prototype)이 라 고 합 니 다.함수 원형 을 사용 하 는 것 은 C 와 C++의 중요 한 특징 이다.그것 의 역할 은 주로 함수 원형 에 따라 프로그램 컴 파일 단계 에서 호출 함수 의 합 법성 을 전면적으로 검사 하 는 것 이다.함수 원형 과 일치 하지 않 는 함수 호출 을 발견 하면 컴 파일 오류 가 발생 했 습 니 다.그것 은 문법 오류 에 속한다.사용 자 는 화면 에 표 시 된 오류 정보 에 따라 오 류 를 발견 하고 바로 잡기 쉽다.
함수 원형 의 일반 형식 은:

          (    1,     2…);
혹시

          (    1    1,     2    2…);
제(1)형 태 는 기본 적 인 형식 이다.읽 기 편 하도록 함수 원형 에 매개 변수 이름 을 추가 하 는 것 도 허용 하면 제(2)형식 이 된다.그러나 컴 파일 시스템 은 매개 변수 이름 을 검사 하지 않 습 니 다.따라서 매개 변수 이름 이 무엇이든지 상관없다.위의 프로그램 에서 의 성명 도 쓸 수 있다.

  float add(float a, float b); //     x、y,  a、b
효과 가 완전히 같다.
함수 원형 과 함수 첫 번 째 쓰기 의 일치,즉 함수 유형,함수 명,매개 변수 개수,매개 변수 유형 과 매개 변수 순서 가 같 아야 합 니 다.함수 호출 시 함수 명,실 삼 유형 과 실 삼 개 수 는 함수 원형 과 일치 해 야 합 니 다.
두 가지 설명:
1)앞에서 설명 한 바 와 같이 호출 된 함수 의 정의 가 기조 함수 에 나타 나 기 전에 설명 할 필요 가 없습니다.컴 파일 시스템 은 정 의 된 함수 유형 을 미리 알 고 있 기 때문에 함수 첫 번 째 에서 제공 하 는 정보 에 따라 함수 호출 에 대해 정확성 검 사 를 할 것 입 니 다.
경험 이 있 는 프로그램 작성 자 들 은 일반적으로 main 함 수 를 맨 앞 에 쓴다.이렇게 하면 전체 프로그램의 구조 와 작용 을 한눈 에 알 수 있 고 전 체 를 통람 한 다음 에 각 함수 의 세부 사항 을 구체 적 으로 이해한다.또한 함수 원형 으로 함 수 를 설명 하고 프로그램 을 작성 할 때 발생 할 수 있 는 오 류 를 줄 일 수 있 습 니 다.함수 성명 의 위치 와 함수 호출 문장의 위치 가 비교적 가 깝 기 때문에 프로그램 을 쓸 때 함수 원형 을 참조 하여 함수 호출 을 쓰기 쉽 고 오류 가 발생 하지 않 습 니 다.그래서 사용 하 는 모든 함수 에 대해 성명 하 는 습관 을 길러 야 한다.이것 은 프로그램의 정확성 과 가 독성 을 확보 하 는 중요 한 부분 이다.
2)함수 성명 의 위 치 는 호출 함수 가 있 는 함수 에서 도 가능 하고 함수 밖에서 도 가능 합 니 다.함수 성명 이 함수 의 외부 에 놓 여 있 으 면 모든 함수 가 정의 되 기 전에 각 메 인 함수 에서 호출 된 함수 에 대해 다시 설명 할 필요 가 없습니다.예 를 들 면:

char letter(char, char); //                        
float f(float, float); //          
int i(float, float);
int main( )
{…}// main                
char letter(char c1, char c2) //  letter  
{…}
float f(float x, float y)//  f  
{…}
int i(float j, float k) //  i  
{…}
만약 한 함수 가 여러 함수 에 의 해 호출 된다 면,이런 방법 을 사용 하 는 것 이 비교적 좋 으 며,모든 메 인 함수 에서 중복 성명 할 필요 가 없다.

좋은 웹페이지 즐겨찾기