首頁 >常見問題 >函數的呼叫可以巢狀嗎

函數的呼叫可以巢狀嗎

藏色散人
藏色散人原創
2021-01-14 10:00:1522423瀏覽

函數的呼叫可以嵌套,但是函數的定義不可以嵌套,因為在C語言中函數的定義都是相互平行、相互獨立的,也就是說在函數定義時,函數體內不能包含另一個函數的定義,即函數不能巢狀定義,但可以巢狀呼叫。

函數的呼叫可以巢狀嗎

本教學操作環境:windows7系統、C18版、Dell G3電腦。

C語言中,函數的呼叫可以嵌套,但函數的定義不可以嵌套。

不能嵌套定義即是

function a(){
    function b(){
 }
}

在a函數裡面定義b函數是錯的,只能在a函數外部定義b函數像這樣

function a(){}
function b(){}

能嵌套調用,即是

function a (){
    b();
}

可以在a函數裡面調用已經定義的b函數。

函數不能巢狀定義是由於語法不支援造成在函數定義的內部不能定義函數。 C語言中函數的定義都是相互平行、相互獨立的,也就是說在函數定義時,函數體內不能包含另一個函數的定義,即函數不能嵌套定義,但可以巢狀呼叫。

什麼是函數的巢狀呼叫?

在呼叫一個函數的過程中,呼叫另外一個函數的過程

函數在C語言中,各個函數的定義都是相對獨立的存在,在函數的內部可以呼叫其他的函數(這裡面不包括main()函數)。這種呼叫過程叫做函數的巢狀(函數的定義部分不能巢狀)。

範例:

求兩個整數的最大公約數和最小公倍數。

問題分析

兩個數的最小公倍數=兩個數的乘積/兩個數的最大公約數。

所以key就是最大公約數.

最大公約數求法思維圖:

函數的呼叫可以巢狀嗎

程式碼實作

#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
#include"math.h"
int gcd(int a, int b)
{
int c;
if (a<b)//保证a的值大于b
{
c = b;
b = a;
a = c;
}
while (a != 0)
{
c = a%b;
b = a;
a = c;//把余数赋值给a,直到a=0时跳出循环,找到结果。
}
return b;
}
int lcd(int a, int b)
{
int c;
c = (a*b) / (gcd(a, b));//函数嵌套的过程
return c;
}
main()
{
int m, n;
printf("请输入两个数:");
scanf("%d,%d", &m, &n);
printf("%d和%d最大公约数为%d\n", m, n, gcd(m, n));
printf("最小公倍数为%d\n", lcd(m, n));
}

函數的實現:找出45和56兩個整數的最小公倍數和最大公因數。

函數的呼叫可以巢狀嗎

推薦:c影片教學

以上是函數的呼叫可以巢狀嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn