일반적인 문제 함수를 정의에는 중첩할 수 있지만 중첩 호출에는 중첩할 수 없나요?

함수를 정의에는 중첩할 수 있지만 중첩 호출에는 중첩할 수 없나요?

Feb 02, 2021 pm 04:28 PM
기능 중첩 호출

틀렸습니다. 함수는 중첩 호출이 될 수 있지만 중첩 정의는 불가능합니다. C 언어에서는 모든 함수가 병렬적입니다. 즉, 함수를 정의할 때 서로 독립적입니다. 즉, 한 함수가 다른 함수에 종속되지 않습니다. 즉, 함수는 정의에 중첩될 수 없지만 서로 호출할 수는 있지만 주요 기능을 호출할 수 없습니다.

함수를 정의에는 중첩할 수 있지만 중첩 호출에는 중첩할 수 없나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, C99 버전, Dell G3 컴퓨터.

틀렸습니다. 함수는 중첩 호출이 가능하지만 중첩 정의는 불가능합니다.

C 언어 함수

함수는 특정 기능을 독립적으로 완료하기 위해 재사용할 수 있는 코드 조각입니다. 사용자가 전달한 데이터를 받을 수도 있고 받지 않을 수도 있습니다. 사용자 데이터를 받는 함수는 정의할 때 매개변수를 지정해야 합니다. 사용자 데이터를 받지 않는 함수는 지정할 필요가 없습니다. 이에 따라 매개변수가 있는 함수와 매개변수가 없는 함수로 나눌 수 있습니다.

코드 세그먼트를 함수로 캡슐화하는 과정을 함수 정의라고 합니다.

함수 정의

사용자가 전달한 데이터를 함수가 수신하지 못하는 경우 매개변수 없이 정의할 수 있습니다. 아래와 같이

dataType  functionName(){
    //body
}
로그인 후 복사

함수가 사용자가 전달한 데이터를 수신해야 하는 경우 매개변수를 사용하여 정의해야 합니다. 아래와 같이

dataType  functionName( dataType1 param1, dataType2 param2 ... ){
    //body
}
로그인 후 복사
  • dataType은 반환 값 유형이며 int, float, char 등과 같은 C 언어의 모든 데이터 유형이 될 수 있습니다. dataType 是返回值类型,它可以是C语言中的任意数据类型,例如 int、float、char 等。

  • functionName 是函数名,它是标识符的一种,命名规则和标识符相同。函数名后面的括号( )不能少。

  • dataType1 param1, dataType2 param2 ...是参数列表。函数可以只有一个参数,也可以有多个,多个参数之间由,分隔。参数本质上也是变量,定义时要指明类型和名称。与无参函数的定义相比,有参函数的定义仅仅是多了一个参数列表。

  • body

  • functionName은 식별자의 한 종류인 함수 이름입니다. 명명 규칙은 식별자와 동일합니다. 함수명 뒤의 괄호( )는 빠질 수 없습니다.


    dataType1 param1, dataType2 param2...는 매개변수 목록입니다. 함수에는 매개변수가 하나만 있을 수도 있고 로 구분된 여러 매개변수가 있을 수도 있습니다. 매개변수는 본질적으로 변수이므로 정의할 때 유형과 이름을 지정해야 합니다. 매개변수 없는 함수의 정의와 비교하여 매개변수화된 함수의 정의에는 매개변수 목록이 하나만 더 있습니다.

body는 함수 본문으로, 함수가 실행해야 하는 코드이자 함수의 주요 부분입니다. 문이 하나만 있어도 함수 본문을 { }로 묶어야 합니다.

반환값이 있는 경우 함수 본문의 return 문을 사용하여 반환합니다. 반환되는 데이터 유형은 dataType과 동일해야 합니다. 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\n", a);
    return 0;
}
로그인 후 복사
실행 결과:
The sum is 5050
로그인 후 복사

함수는 중첩 정의일 수 없습니다, main도 함수 정의이므로 sum은 main 외부에 배치해야 합니다. 함수를 먼저 정의한 후 사용해야 하므로 sum이 main 앞에 위치해야 합니다.

참고: main은 함수 호출이 아니라 함수 정의입니다. 실행 파일이 메모리에 로드되면 시스템은 메인 함수에서 실행을 시작합니다. 즉, 시스템은 우리가 정의한 메인 함수를 호출합니다.

튜토리얼 추천: "

c 언어 튜토리얼 영상

"

Function call

소위 함수 호출(Function Call)은 정의된 함수를 사용하는 것입니다. 함수 호출의 일반적인 형식은 다음과 같습니다.

functionName(param1, param2, param3 ...);
로그인 후 복사

functionName은 함수 이름이고, param1, param2, param3...은 실제 매개변수 목록입니다. 실제 매개변수는 상수, 변수, 표현식 등이 될 수 있습니다. 여러 개의 실제 매개변수는 쉼표로 구분됩니다.

C 언어에는 다음과 같이 함수를 호출하는 다양한 방법이 있습니다.

//函数作为表达式中的一项出现在表达式中
z = max(x, y);
m = n + max(x, y);
//函数作为一个单独的语句
printf("%d", a);
scanf("%d", &b);
//函数作为调用另一个函数时的实参
printf( "%d", max(x, y) );
total( max(x, y), min(m, n) );
로그인 후 복사

함수 중첩 호출

함수는 중첩 정의가 될 수 없지만 중첩 호출, 즉 정의 또는 호출 내에서 호출될 수 있습니다. 함수 프로세스 중에 다른 함수에 대한 호출이 허용됩니다.

【예제】합계 계산 = 1! + 2! + 3! + ... + (n-1)! + n!

분석: 계승 계산용 함수와 누적 계산용 함수를 작성할 수 있습니다. 합집합. 🎜
#include <stdio.h>
//求阶乘
long factorial(int n){
    int i;
    long result=1;
    for(i=1; i<=n; i++){
        result *= i;
    }
    return result;
}
// 求累加的和
long sum(long n){
    int i;
    long result = 0;
    for(i=1; i<=n; i++){
        //在定义过程中出现嵌套调用
        result += factorial(i);
    }
    return result;
}
int main(){
    printf("1!+2!+...+9!+10! = %ld\n", sum(10));  //在调用过程中出现嵌套调用
    return 0;
}
로그인 후 복사
🎜작업 결과: 🎜
1!+2!+...+9!+10! = 4037913
로그인 후 복사
🎜factorial()에 대한 호출은 sum()의 정의에 나타나고, sum()에 대한 호출은 printf() 호출 중에 나타나고, printf()는 main()에 의해 호출됩니다. 전반적인 호출 관계는 다음과 같습니다. 🎜
main() --> printf() --> sum() --> factorial()
로그인 후 복사
🎜정의 또는 호출 프로세스 중에 함수 A()가 다른 함수 B()를 호출하면 A()를 기본 호출 함수로 호출하거나 B()를 호출하는 함수로 호출합니다. . 🎜🎜호출 함수가 호출 함수를 만나면 호출 함수는 일시 중지되고 호출 함수가 실행을 완료한 후 CPU는 대신 호출 함수의 코드를 실행하고 호출 함수는 다음과 같이 실행됩니다. 이전 상태를 기반으로 계속 구현합니다. 🎜🎜C 언어 프로그램의 실행 프로세스는 단순하거나 복잡한 호출 체인을 형성하는 여러 함수 간의 상호 호출 프로세스로 간주할 수 있습니다. 이 체인의 시작점은 main()이고 끝점도 main()입니다. main()이 모든 함수 호출을 마치면 값(예: return 0;)을 반환하여 자체 수명을 종료하고 전체 프로그램을 종료합니다. 🎜

함수는 재사용할 수 있는 코드 블록입니다. CPU는 함수 호출이 발생하면 먼저 현재 코드 블록의 다음 코드 주소를 기록해야 합니다(주소가 0X1000이라고 가정). ) , 다른 코드 블록으로 점프한 다음 다시 돌아와 0X1000에서 코드를 계속 실행합니다. 전체 프로세스는 CPU가 잠시 휴식을 취하고, 다른 작업을 수행하기 위해 일시적으로 작업을 내려놓고, 완료한 후 이전 작업을 계속하는 것과 같습니다.

더 많은 컴퓨터 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 함수를 정의에는 중첩할 수 있지만 중첩 호출에는 중첩할 수 없나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

golang 함수에서 새 함수를 동적으로 생성하기 위한 팁 golang 함수에서 새 함수를 동적으로 생성하기 위한 팁 Apr 25, 2024 pm 02:39 PM

Go 언어는 클로저와 리플렉션이라는 두 가지 동적 함수 생성 기술을 제공합니다. 클로저는 클로저 범위 내의 변수에 대한 액세스를 허용하며 리플렉션은 FuncOf 함수를 사용하여 새 함수를 생성할 수 있습니다. 이러한 기술은 HTTP 라우터를 사용자 정의하고 고도로 사용자 정의 가능한 시스템을 구현하며 플러그 가능한 구성 요소를 구축하는 데 유용합니다.

C++ 함수 이름 지정 시 매개변수 순서에 대한 고려 사항 C++ 함수 이름 지정 시 매개변수 순서에 대한 고려 사항 Apr 24, 2024 pm 04:21 PM

C++ 함수 이름 지정에서는 가독성을 높이고 오류를 줄이며 리팩토링을 용이하게 하기 위해 매개변수 순서를 고려하는 것이 중요합니다. 일반적인 매개변수 순서 규칙에는 작업-객체, 개체-작업, 의미론적 의미 및 표준 라이브러리 준수가 포함됩니다. 최적의 순서는 함수의 목적, 매개변수 유형, 잠재적인 혼동 및 언어 규칙에 따라 달라집니다.

Java로 효율적이고 유지 관리 가능한 함수를 작성하는 방법은 무엇입니까? Java로 효율적이고 유지 관리 가능한 함수를 작성하는 방법은 무엇입니까? Apr 24, 2024 am 11:33 AM

효율적이고 유지 관리 가능한 Java 함수를 작성하는 핵심은 단순함을 유지하는 것입니다. 의미 있는 이름을 사용하세요. 특별한 상황을 처리합니다. 적절한 가시성을 사용하십시오.

Excel 함수 수식의 전체 모음 Excel 함수 수식의 전체 모음 May 07, 2024 pm 12:04 PM

1. SUM 함수는 열이나 셀 그룹의 숫자를 합하는 데 사용됩니다(예: =SUM(A1:J10)). 2. AVERAGE 함수는 열이나 셀 그룹에 있는 숫자의 평균을 계산하는 데 사용됩니다(예: =AVERAGE(A1:A10)). 3. COUNT 함수, 열이나 셀 그룹의 숫자나 텍스트 수를 세는 데 사용됩니다. 예: =COUNT(A1:A10) 4. IF 함수, 지정된 조건을 기반으로 논리적 판단을 내리고 결과를 반환하는 데 사용됩니다. 해당 결과.

C++ 함수 기본 매개변수와 가변 매개변수의 장단점 비교 C++ 함수 기본 매개변수와 가변 매개변수의 장단점 비교 Apr 21, 2024 am 10:21 AM

C++ 함수에서 기본 매개변수의 장점에는 호출 단순화, 가독성 향상, 오류 방지 등이 있습니다. 단점은 제한된 유연성과 명명 제한입니다. 가변 매개변수의 장점에는 무제한의 유연성과 동적 바인딩이 포함됩니다. 단점은 더 큰 복잡성, 암시적 유형 변환 및 디버깅의 어려움을 포함합니다.

참조 유형을 반환하는 C++ 함수의 이점은 무엇입니까? 참조 유형을 반환하는 C++ 함수의 이점은 무엇입니까? Apr 20, 2024 pm 09:12 PM

C++에서 참조 유형을 반환하는 함수의 이점은 다음과 같습니다. 성능 개선: 참조로 전달하면 객체 복사가 방지되므로 메모리와 시간이 절약됩니다. 직접 수정: 호출자는 반환된 참조 객체를 다시 할당하지 않고 직접 수정할 수 있습니다. 코드 단순성: 참조로 전달하면 코드가 단순화되고 추가 할당 작업이 필요하지 않습니다.

사용자 정의 PHP 함수와 사전 정의된 함수의 차이점은 무엇입니까? 사용자 정의 PHP 함수와 사전 정의된 함수의 차이점은 무엇입니까? Apr 22, 2024 pm 02:21 PM

사용자 정의 PHP 함수와 사전 정의된 함수의 차이점은 다음과 같습니다. 범위: 사용자 정의 함수는 정의 범위로 제한되는 반면, 사전 정의된 함수는 스크립트 전체에서 액세스할 수 있습니다. 정의 방법: 사용자 정의 함수는 function 키워드를 사용하여 정의되는 반면, 사전 정의된 함수는 PHP 커널에 의해 정의됩니다. 매개변수 전달: 사용자 정의 함수는 매개변수를 수신하지만 사전 정의된 함수에는 매개변수가 필요하지 않을 수 있습니다. 확장성: 필요에 따라 사용자 정의 함수를 생성할 수 있으며 사전 정의된 함수는 내장되어 있어 수정할 수 없습니다.

C++ 함수 예외 고급: 사용자 정의된 오류 처리 C++ 함수 예외 고급: 사용자 정의된 오류 처리 May 01, 2024 pm 06:39 PM

C++의 예외 처리는 특정 오류 메시지, 상황별 정보를 제공하고 오류 유형에 따라 사용자 지정 작업을 수행하는 사용자 지정 예외 클래스를 통해 향상될 수 있습니다. 특정 오류 정보를 제공하려면 std::Exception에서 상속된 예외 클래스를 정의하세요. 사용자 정의 예외를 발생시키려면 throw 키워드를 사용하십시오. try-catch 블록에서 Dynamic_cast를 사용하여 발견된 예외를 사용자 지정 예외 유형으로 변환합니다. 실제 경우 open_file 함수는 FileNotFoundException 예외를 발생시킵니다. 예외를 포착하고 처리하면 보다 구체적인 오류 메시지가 제공될 수 있습니다.