溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語(yǔ)言函數(shù)怎么定義與調(diào)用

發(fā)布時(shí)間:2022-10-17 14:25:50 來源:億速云 閱讀:230 作者:iii 欄目:編程語(yǔ)言

今天小編給大家分享一下C語(yǔ)言函數(shù)怎么定義與調(diào)用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

函數(shù)的由來好處

首先在說函數(shù)的使用與概述之前,我們先了解一下函數(shù)給我們編程帶來的好處????

  • 其實(shí)在匯編語(yǔ)言階段,函數(shù)這個(gè)概念還是比較模糊的。匯編語(yǔ)言的代碼往往就是從入口 開始一條一條執(zhí)行,直到遇到跳轉(zhuǎn)指令(比如 ARM 指令 B、BL、BX、BLX 之類)然后才 跳轉(zhuǎn)到目的指令處執(zhí)行。這個(gè)時(shí)候所有的代碼僅僅是按其將要執(zhí)行的順序排列而已。后來人 們發(fā)現(xiàn)這樣寫代碼非常費(fèi)勁,容易出錯(cuò),也不方便。于是想出一個(gè)辦法,把一些功能相對(duì)來 說能成為一個(gè)整體的代碼放到一起打包,通過一些數(shù)據(jù)接口和外界通信。這就是函數(shù)的由來。 那函數(shù)能給我們帶來什么好處呢?簡(jiǎn)單來說可以概括成以下幾點(diǎn):

  1. 降低復(fù)雜性:使用函數(shù)的最首要原因是為了降低程序的復(fù)雜性,可以使用函數(shù)來隱 含信息,從而使你不必再考慮這些信息。

  2. 避免重復(fù)代碼段:如果在兩個(gè)不同函數(shù)中的代碼很相似,這往往意味著分解工作有 誤。這時(shí),應(yīng)該把兩個(gè)函數(shù)中重復(fù)的代碼都取出來,把公共代碼放入一個(gè)新的通用函數(shù)中, 然后再讓這兩個(gè)函數(shù)調(diào)用新的通用函數(shù)。通過使公共代碼只出現(xiàn)一次,可以節(jié)約許多空間。 因?yàn)橹灰谝粋€(gè)地方改動(dòng)代碼就可以了。這時(shí)代碼也更可靠了。

  3. 限制改動(dòng)帶來的影響:由于在獨(dú)立區(qū)域進(jìn)行改動(dòng),因此,由此帶來的影響也只限于 一個(gè) 或最多幾個(gè)區(qū)域中。

  4. 隱含順序:如果程序通常先從用戶那里讀取數(shù)據(jù),然后再?gòu)囊粋€(gè)文件中讀取輔助數(shù) 據(jù),在設(shè)計(jì)系統(tǒng)時(shí)編寫一個(gè)函數(shù),隱含哪一個(gè)首先執(zhí)行的信息。

  5. 改進(jìn)性能:把代碼段放入函數(shù)也使得用更快的算法或執(zhí)行更快的語(yǔ)言(如匯編)來 改進(jìn)這段代碼的工作變得容易些。

  6. 進(jìn)行集中控制:專門化的函數(shù)去讀取和改變內(nèi)部數(shù)據(jù)內(nèi)容,也是一種集中的控制形 式。

  7. 隱含數(shù)據(jù)結(jié)構(gòu):可以把數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)細(xì)節(jié)隱含起來。

  8. 隱含指針操作:指針操作可讀性很差,而且很容易引發(fā)錯(cuò)誤。通過把它們獨(dú)立在函 數(shù)有序列表中,可以把注意力集中到操作意圖而不是集中到的指針操作本身。

  9. 隱含全局變量:參數(shù)傳遞。

函數(shù)概述 

  • 什么是函數(shù)?函數(shù)在數(shù)學(xué)當(dāng)中就已經(jīng)學(xué),當(dāng)你給過不同的x的值我就可以得到一個(gè)不同的結(jié)果,C語(yǔ)言的函數(shù)其實(shí)也是一樣的。函數(shù) (function)是完成指定特定人物的獨(dú)立的代碼程序。 語(yǔ)法規(guī)則定義了函數(shù)的結(jié)構(gòu)和使用方式。雖然C中的函數(shù)和其他語(yǔ)言 中的函數(shù)、子程序、過程作用相同,但是細(xì)節(jié)上略有不同。一些函數(shù)執(zhí)行某 些動(dòng)作,如:printf()把數(shù)據(jù)打印到屏幕上;一些函數(shù)找出一個(gè)值供程序使用, 如strlen()把指定字符串的長(zhǎng)度返回給程序。一般而言,函數(shù)可以同時(shí)具備以 上兩種功能。

  • 為什么要使用函數(shù)?首先,使用函數(shù)可以省去編寫重復(fù)代碼的苦差。如 果程序要多次完成某項(xiàng)任務(wù),那么只需編寫一個(gè)合適的函數(shù),就比如說:你要編寫代碼實(shí)現(xiàn)計(jì)算機(jī)的功能,那么你就可以用函數(shù)把計(jì)算機(jī)的代碼包裝到你自定義的函數(shù)當(dāng)中。就可以在需要 時(shí)使用這個(gè)函數(shù),或者在不同的程序中使用該函數(shù),就像許多程序中使用 putchar()一樣。其次,即使程序只完成某項(xiàng)任務(wù)一次,也值得使用函數(shù)。因 為函數(shù)讓程序更加模塊化,從而提高了程序代碼的可讀性,更方便后期修改、完善。

  • 概述函數(shù) 構(gòu)成C程序的基本單元是函數(shù),函數(shù)包含程序的可執(zhí)行代碼。函數(shù)是一組一組執(zhí)行的代碼語(yǔ)句,每個(gè)C程序當(dāng)中都有函數(shù),即主函數(shù)是main()函數(shù)當(dāng)中,有且只有一個(gè)。注意:每個(gè)程序的入口以及出口都是位于 main 函數(shù)之中。所有簡(jiǎn)單的程序都可以定義其他額外的函數(shù),編寫程序的時(shí)候,并不是將所有的內(nèi)容都放在主函數(shù) main 當(dāng)中為了方便規(guī)劃、組織、編寫和調(diào)試,一般的做法是將一個(gè)程序劃分成若干個(gè)程序模塊,每一個(gè)模塊都可以完成一個(gè)功能。這樣不同的模塊程序可以由不同的人去完成,從而可以提高軟件的開發(fā)效率。也就是說主函數(shù)可以調(diào)用其它的函數(shù)。其它的函數(shù)當(dāng)中也是可以去互相調(diào)用的。

定義函數(shù) 

C語(yǔ)言的庫(kù)函數(shù)在編寫的時(shí)候是可以直接調(diào)用的,比如 printf 輸出函數(shù)。而用戶自定義函數(shù)則必須由用戶對(duì)其進(jìn)行定義,在其函數(shù)的定義中完成函數(shù)所特定的內(nèi)容功能,這樣才能被其他函數(shù)調(diào)用。

C 語(yǔ)言中的函數(shù)定義的一般形式如下:

  • 返回類型    函數(shù)名稱(參數(shù)列表)

  • {

  • 函數(shù)體(函數(shù)實(shí)現(xiàn)特定功能的過程)

  • }

  1. 返回類型一個(gè)函數(shù)可以返回一個(gè)值。返回類型 是函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作而不返回值,在這種情況下,返回類型 是關(guān)鍵字 void。

  2. 函數(shù)名稱這是函數(shù)的實(shí)際名稱。函數(shù)名和參數(shù)列表一起構(gòu)成了函數(shù)簽名。

  3. 參數(shù)參數(shù)就像是占位符。當(dāng)函數(shù)被調(diào)用時(shí),您向參數(shù)傳遞一個(gè)值,這個(gè)值被稱為實(shí)際參數(shù)。參數(shù)列表包括函數(shù)參數(shù)的類型、順序、數(shù)量。參數(shù)是可選的,也就是說,函數(shù)可能不包含參數(shù)。

  4. 函數(shù)主體函數(shù)主體包含一組定義函數(shù)執(zhí)行任務(wù)的語(yǔ)句。

定義函數(shù)代碼 

代碼示例如下:

int Add(int x, int    //函數(shù)頭部分{
  int z = x + y;       //定義整形變量,實(shí)現(xiàn)加法的操作
  return z;            //返回操作結(jié)果,結(jié)束

C語(yǔ)言函數(shù)怎么定義與調(diào)用

函數(shù)頭:標(biāo)志一個(gè)函數(shù)代碼的開始,這是函數(shù)的入口處。函數(shù)頭組成分為個(gè)部分。

C語(yǔ)言函數(shù)怎么定義與調(diào)用

函數(shù)體:函數(shù)頭的下方位置,由一對(duì)大括號(hào)括起來,大括號(hào)決定了函數(shù)體的范圍。函數(shù)要實(shí)現(xiàn)特定的功能,都是在函數(shù)體通過代碼語(yǔ)句完成的,最后通過 return 語(yǔ)句返回實(shí)現(xiàn)的結(jié)果。

調(diào)用函數(shù)實(shí)例

下列是函數(shù)調(diào)用的實(shí)例,函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的比較!調(diào)用函數(shù)時(shí),傳遞所需參數(shù),如果函數(shù)返回一個(gè)值,則可以存儲(chǔ)返回值。

#define
int Compare_size(int x, int{
  if (x > y)
    return x;
  else
    return y;
}
#include<stdio.h>
int main(void){
  int num1 = 0;
  int num2 = 0;
  printf("請(qǐng)輸入:");
  scanf("%d %d", &num1, &num2);

  int result = Compare_size(num1, num2);
  printf("result = %d\n", result);
  return 0;
}

以上就是“C語(yǔ)言函數(shù)怎么定義與調(diào)用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI