틀렸습니다. 함수는 중첩 호출이 될 수 있지만 중첩 정의는 불가능합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

드림위버 CS6
시각적 웹 개발 도구

Dreamweaver Mac版
시각적 웹 개발 도구
