C 언어 사용자 정의 함수 의 실현

함 수 는 반복 해서 사용 할 수 있 는 코드 로 특정한 기능 을 독립 적 으로 완성 할 수 있 습 니 다.사용자 가 전달 한 데 이 터 를 받 을 수도 있 고 받 지 않 을 수도 있 습 니 다.사용자 데 이 터 를 받 는 함 수 는 정의 할 때 파 라 메 터 를 가리 키 고 사용자 데 이 터 를 받 지 않 는 것 은 가리 키 지 않 아 도 됩 니 다.이 점 에 따라 함 수 를 유 참 함수 와 무 참 함수 로 나 눌 수 있 습 니 다.
코드 세그먼트 를 함수 로 밀봉 하 는 과정 을 함수 정의 라 고 합 니 다.
C 언어 무 참 함수 의 정의
함수 가 사용자 가 전달 하 는 데 이 터 를 받 지 않 으 면 정의 할 때 인 자 를 가지 고 있 지 않 아 도 됩 니 다.다음 과 같다.

dataType functionName(){
  //body
}
4.567917.dataType 은 반환 값 형식 으로 C 언어 에서 임의의 데이터 형식 일 수 있 습 니 다.예 를 들 어 int,float,char 등 입 니 다
  • functionName 은 함수 이름 입 니 다.식별 자의 일종 입 니 다.명명 규칙 은 식별 자 와 같 습 니 다.함수 명 뒤의 괄호()는 없어 서 는 안 된다
  • 4.567917.body 는 함수 체 로 함수 가 실행 해 야 할 코드 이 고 함수 의 주체 부분 입 니 다.한 문장 만 있 더 라 도 함수 체 는{}로 둘러싸 여야 합 니 다4.567917.반환 값 이 있 으 면 함수 체 에서 return 문 구 를 사용 하여 되 돌려 줍 니 다.return 에서 나 온 데이터 의 형식 은 dataType 과 같 아야 합 니 다예 를 들 어 함 수 를 정의 하고 1 에서 100 까지 의 결 과 를 계산 합 니 다.
    
    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 언어 사용자 정의 함수 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기