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
{…}
만약 한 함수 가 여러 함수 에 의 해 호출 된다 면,이런 방법 을 사용 하 는 것 이 비교적 좋 으 며,모든 메 인 함수 에서 중복 성명 할 필요 가 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio에서 파일 폴더 구분 (포함 경로 설정)Visual Studio에서 c, cpp, h, hpp 파일을 폴더로 나누고 싶었습니까? 어쩌면 대부분의 사람들이 있다고 생각합니다. 처음에 파일이 만들어지는 장소는 프로젝트 파일 등과 같은 장소에 있기 때문에 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.