C 언어 사용자 정의 함수 의 실현
코드 세그먼트 를 함수 로 밀봉 하 는 과정 을 함수 정의 라 고 합 니 다.
C 언어 무 참 함수 의 정의
함수 가 사용자 가 전달 하 는 데 이 터 를 받 지 않 으 면 정의 할 때 인 자 를 가지 고 있 지 않 아 도 됩 니 다.다음 과 같다.
dataType functionName(){
//body
}
4.567917.dataType 은 반환 값 형식 으로 C 언어 에서 임의의 데이터 형식 일 수 있 습 니 다.예 를 들 어 int,float,char 등 입 니 다
int sum(){
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
return sum;
}
누적 결 과 는 변수 sum 에 저장 되 고 마지막 으로 return 문 구 를 통 해 되 돌아 갑 니 다.sum 은 int 형 이 고 반환 값 도 int 형식 이 며 일일이 대응 합 니 다.return 은 C 언어의 키워드 로 함수 에 만 사용 되 며 처리 결 과 를 되 돌려 줍 니 다.
위의 코드 를 완전 하 게 보충 합 니 다:
#include <stdio.h>
int sum(){
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
return sum;
}
int main(){
int a = sum();
printf("The sum is %d
", a);
return 0;
}
실행 결과:The sum is 5050
함 수 는 끼 워 넣 을 수 없습니다.main 도 함수 정의 이기 때문에 sum 을 main 밖 에 두 어야 합 니 다.함 수 는 먼저 정의 한 후에 사용 해 야 하기 때문에 sum 은 main 앞 에 두 어야 합 니 다.
메모:main 은 함수 정의 이지 함수 호출 이 아 닙 니 다.실행 가능 한 파일 을 메모리 에 불 러 온 후에 시스템 은 main 함수 부터 실 행 됩 니 다.즉,시스템 은 우리 가 정의 한 main 함 수 를 호출 합 니 다.
반환 값 함수 없 음
어떤 함 수 는 반환 값 이 필요 하지 않 거나 반환 값 형식 이 확실 하지 않 으 면 void 로 표시 할 수 있 습 니 다.예 를 들 어:
void hello(){
printf ("Hello,world
");
// return
}
void 는 C 언어 중의 한 키워드 로'빈 유형'이나'유형 없 음'을 나타 내 며 대부분 상황 에서 return 문장 이 없다 는 것 을 의미한다.C 언어 는 참 함수 의 정의 가 있다
함수 가 사용자 가 전달 하 는 데 이 터 를 받 아야 한다 면 정 의 를 내 릴 때 인 자 를 가 져 가 야 합 니 다.다음 과 같다.
dataType functionName( dataType1 param1, dataType2 param2 ... ){
//body
}
dataType 1 param 1,dataType 2 param 2...매개 변수 목록 입 니 다.함 수 는 하나의 매개 변수 만 있 을 수도 있 고 여러 개의 매개 변수 간 에'구분'이 있 을 수도 있 습 니 다.매개 변 수 는 본질 적 으로 변수 이 므 로 정의 할 때 유형 과 이름 을 밝 혀 야 합 니 다.무 참 함수 의 정의 에 비해 유 참 함수 의 정 의 는 하나의 매개 변수 목록 만 더 있 을 뿐이다.데 이 터 는 매개 변 수 를 통 해 함수 내부 로 전달 하여 처리 하고 처리 가 끝 난 후에 반환 값 을 통 해 함수 외부 에 알 립 니 다.
위의 예 를 바 꾸 고 m 에서 n 까지 의 결 과 를 계산 합 니 다.
int sum(int m, int n){
int i, sum=0;
for(i=m; i<=n; i++){
sum+=i;
}
return sum;
}
매개 변수 목록 에서 제 시 된 매개 변 수 는 함수 체 에서 사용 할 수 있 으 며 사용 방식 은 일반 변수 와 같 습 니 다.sum()함 수 를 호출 할 때 두 개의 데 이 터 를 전달 해 야 합 니 다.하 나 는 m 에 전달 하고 하 나 는 n 에 전달 해 야 합 니 다.당신 은 정 수 를 직접 전달 할 수 있 습 니 다.예 를 들 어:
int result = sum(1, 100); //1 m,100 n
변 수 를 전달 할 수도 있 습 니 다:
int begin = 4;
int end = 86;
int result = sum(begin, end); //begin m,end n
정수 와 변수 가 함께 전 달 될 수도 있 습 니 다.
int num = 33;
int result = sum(num, 80); //num m,80 n
함수 정의 시 제 시 된 매개 변 수 를 형식 매개 변수 라 고 부 르 고 형 삼 이 라 고 부른다.함수 호출 시 제 시 된 매개 변수(즉 전 달 된 데이터)를 실제 매개 변수 라 고 부 르 며,실제 매개 변수 라 고 부른다.함수 호출 시 실제 인삼 의 값 을 형 삼 에 전달 하 는 것 은 할당 작업 에 해당 합 니 다.원칙적으로 실 삼 의 유형 과 수 는 형 삼 과 일치 해 야 한다.만약 에 자동 유형 전환 을 할 수 있 거나 강제 유형 전환 을 할 수 있다 면 실제 인삼 유형 도 형 삼 유형 과 다 를 수 있다.예 를 들 어 int 유형의 실 삼 을 float 유형의 형 삼 에 전달 하면 자동 유형 전환 이 발생 할 수 있다.
위의 코드 를 완전 하 게 보충 합 니 다:
#include <stdio.h>
int sum(int m, int n){
int i, sum=0;
for(i=m; i<=n; i++){
sum+=i;
}
return sum;
}
int main(){
int begin = 5, end = 86;
int result = sum(begin, end);
printf("The sum from %d to %d is %d
", begin, end, result);
return 0;
}
실행 결과:The sum from 5 to 86 is 3731
sum()을 정의 할 때 인자 m,n 의 값 은 모두 알 수 없습니다.sum()을 호출 할 때 begin,end 의 값 을 각각 m,n 에 전달 합 니 다.이것 은 변수 에 값 을 부여 하 는 과정 과 같 습 니 다.이것 은 다음 과 같 습 니 다.
m = begin;
n = end;
함수한 가지 강조 하 자 면 C 언어 는 함수 내장 정 의 를 허용 하지 않 습 니 다.즉,한 함수 에서 다른 함 수 를 정의 할 수 없고 모든 함수 밖에서 다른 함 수 를 정의 해 야 한 다 는 것 이다.main()도 함수 정의 이 고 main()함수 내부 에서 새로운 함 수 를 정의 할 수 없습니다.
아래 의 예 는 잘못된 것 이다.
#include <stdio.h>
void func1(){
printf("http://c.biancheng.net");
void func2(){
printf("C ");
}
}
int main(){
func1();
return 0;
}
일부 초보 자 들 은 func 1()내부 에서 func 2()를 정의 하면 func 1()을 호출 할 때 도 func 2()를 호출 하 는 것 은 잘못된 것 이 라 고 주장 한다.정확 한 문법 은 다음 과 같 아야 한다.
#include <stdio.h>
void func2(){
printf("C ");
}
void func1(){
printf("http://c.biancheng.net");
func2();
}
int main(){
func1();
return 0;
}
func 1(),func 2(),main()세 가지 함 수 는 평행 입 니 다.누구 도 누구의 내부 에 있 을 수 없습니다.'func 1()을 호출 할 때 도 func 2()를 호출 하 는 목적 을 달성 하려 면 func 2()를 func 1()밖 에 정의 하고 func 1()내부 에서 func 2()를 호출 해 야 합 니 다.일부 프로 그래 밍 언어 는 함수 내장 정 의 를 허용 합 니 다.예 를 들 어 자바 스 크 립 트 는 자바 스 크 립 트 에서 함수 의 내장 정 의 를 자주 사용 합 니 다.
재 귀 함수(두 개의 간단 한 재 귀 호출)
1,계승
함수 성명
int MyFun(int num);
함수 의 실현
int MyFun(int num){
//
// int sum1=1;
// for (int i=1; i<=num; i++) {
// sum1*=i;
// }
// return sum1;
//
if (num==1||num==0) {
return 1;
}else {
return num*MyFun(num-1);
}
}
호출
printf("sum=%d
",MyFun(6));
실행 효과2,피 보 나 절 수열
함수 성명
int fbsnq(int num);
함수 의 실현
int fbsnq(int num){
//
if(num==1||num==2){
return 1;
}
return fbsnq(num-1)+fbsnq(num-2);
//
// int n1=1,n2=1,temp=0;
// if (num==1||num==2) {
// return 1;
// }
// int i=2;
// for(;i<num;i++){
// temp=n1+n2;
// n1=n2;
// n2=temp;
// }
// return temp;
}
함수 호출
for (int i=1; i<=30; i++) {
if ((i-1)%5==0) {
printf("
");
}
printf("%10d", fbsnq(i));
}
printf("
");
실행 결과C 언어 사용자 정의 함수 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 사용자 정의 함수 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.