1. 程式人生 > >C語言中的函式

C語言中的函式

在對C語言有過一定的瞭解之後,我們都會涉及到一個概念:函式。
那麼,什麼是函式呢?
首先,我們來看一段 程式碼:

#include<stdio.h>

int Max(int x,int y)
{
    retutn (x>y)?(x):(y);
}

int main()
{
int a = 9;
int b = 11;
int ret = Max(a,b);
printf("最大值是%d\n",ret);
return 0;
}

在上面的程式中,我們將引數a,b傳入到函式Max之中,最後求出結果並返回,那麼,這樣寫的好處是什麼呢?我們為什麼要使用函式來實現這樣的功能呢?
首先,函式可以提高我們程式碼的複用性,如果我們頻繁使用某一個功能,而這個功能被我們提前用函式的形式編寫好,那麼我們只需要完成對他的呼叫就可以了,而不是去重複的進行書寫。
在C語言中,本身的基礎庫為我們提供了很多庫函式,比如strlen,strcpy,rand……
能夠熟悉使用這些子程式(子程式就是函式),對我們的業務提升有很大的幫助,但是一定要記得,使用庫函式的時候要引正確的標頭檔案。
接下來說說函式的實參和形參,在剛開始接觸C語言的時候,我經常被這些個概念搞昏,當然,我比較弱,希望以後的你,變的更強。
實際引數(實參):實參就是就是上面程式碼中Max(a,b)中的a,b,它既可以是變數、常量,也可以是表示式,甚至可以是函式,但無論它是何種形式,在最後傳給上面的形參時,它都是一個確定的值,以便把這些函式傳給形參。
形式引數(形參):形參是實參是一份臨時拷貝。

上面函式體部分的x,y就是形參,在程式沒有執行到函式體這一部分時,形參是不會被建立的。而當函式執行結束後,形參也隨之銷燬,因此形參只在函式中有效。
稍微瞭解一下形參和實參,我們來說說函式呼叫。函式呼叫可以分為傳值呼叫傳址呼叫
傳值呼叫:形參和實參分別處於不同的記憶體塊,對形參的修改不會對實參造成影響。
傳址呼叫:形參和實參依然位於不同的記憶體塊,但兩者之間存在了一層關係,形參之中存著實參的地址,這樣通過形參可以輕易的找到實參在記憶體中存的記憶體單元,這樣函式可以通過對形參的間接訪問修改實參。

相關推薦

C語言函式宣告、形參、實參

函式原型: 原型prototype是函式的宣告;描述了函式的返回值與引數;  函式原型說明了兩點: 1、該函式的返回值 2、該函式的引數及其型別 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函式的引數: 引數到底是什

C語言函式指標陣列的初始化和使用

不比多說上一個程式碼,就懂了! 程式碼一: #include <stdio.h> int func(int i) {     printf("%d\n",i);     return i*i; } int

C語言函式呼叫怎麼返回兩個值

在C語言中,函式只能返回一個值,要返回兩個值,可以改換思路,通過其它方式做到。 1 建立陣列,返回指標。 在要返回的兩個值型別相同時,可以用建立陣列的方式,將要返回的值存在陣列中,並返回陣列首地址,這樣就可以實現返回兩個值的效果。 需要注意的是,要返回陣列首地址,那麼返回

C語言函式引數傳遞的兩種方式

問題及程式碼: /* *完成日期:2018.10.2 * *問題描述:c語言函式引數傳遞的兩種方式 * */ #include <stdio.h> void swap1(int x, int y); //對交換函式myswap1的提前宣告 (傳值

[C]C語言函式實現返回引數二進位制 1 的個數

通過C語言程式將十進位制數轉化成二進位制數,然後求出二進位制數中1的個數。 下面用三種方法來實現。來 方法一: 除2取餘法。對一十進位制數,用2輾轉相除至結果為1,將餘數和最後的1從下向上倒序寫就是對應的二進位制。 例如:十進位制數302轉化成二進位制。 302

C語言函式名的意義深究

一、通常的函式呼叫 一個通常的函式呼叫的例子: /* 自行包含標頭檔案 */ void MyFun(int x); /* 此處的宣告也可寫成:void MyFun(int) */ int main(int argc, char* argv[]) {    MyFun(10)

C語言函式的呼叫與棧幀

int main() { 002233C0  push        ebp   002233C1  mov         ebp,esp   002233C3  sub         esp,0E4h   002233C9  push        

c語言函式呼叫的過程

一.程式在記憶體中的佔用。要學習C語言中函式呼叫的過程,必須要知道程式在記憶體中各個區域的分佈。C語言的函式呼叫的過程主要分佈在棧中,所以我們今天主要研究棧。二.幾個基本的彙編指令。    call:1.將當前指令的下一條指令的地址儲存到棧中。              2.

C語言函式指標的簡單使用

本文的主要內容目錄: 一、函式指標的引入 二、函式指標的簡單運用 一、函式指標的引入 在C語言當中,指標的使用非常重要的。我們都知道有變數指標,可以通過這個變數指標來訪問這個變數;那麼有沒有函式指標

C語言函式傳遞(實參 形參)

形參:在被調函式形參表中的變數名、陣列名,該過程在被呼叫前,沒有為它們分配記憶體,其作用是說明自變數的型別和形態以及在過程中的作用。  形參可以是 合法變數名,陣列名  實參:從主調過程傳遞給被呼叫過程的引數值。實參可以是變數名、陣列名、常數或表示式。在過程呼叫  傳遞引

C語言函式的思考(可以返回區域性變數嗎)

 一般的來說,函式是可以返回區域性變數的。 區域性變數的作用域只在函式內部,在函式返回後,區域性變數的記憶體已經釋放了。因此,如果函式返回的是區域性變數的值,不涉及地址,程式不會出錯。但是如果返回的是區域性變數的地址(指標)的話,程式執行後會出錯。因為函式只是把指標複製後返

C語言函式呼叫與返回值的關係是什麼

而函式是負責要做什麼 3); //呼叫函式 3我們稱為形式引數 int sum(int arg1 並傳遞引數3和4過去 函式將計算機過程封裝 也就可以說沒有返回值 ||| 函式呼叫和返回值的關係其實和賦值運

第二週專案1-C/C++語言函式引數傳遞的三種方式

問題及程式碼: /*  * Copyright (c) 2016,煙臺大學計算機與控制工程學院  * All rights reserved.  * 檔名稱:Cpp1.cpp  * 作者:張相如  * 完成日期:2016年9月5日  * 版本號:v1.0  *   * 問題

c語言函式宣告的作用

在c語言中函式宣告不是必須的,即使沒有宣告函式,gcc編譯器也只是會提示警告。但是函式宣告卻是很有必要的。 那麼函式宣告到底有宣告作用呢? 其實函式宣告的作用是讓編譯器幫你檢查你呼叫函式時有沒有錯誤。比如引數的數量是否正確,如果呼叫函式時候少 傳入一個引數,並且沒有宣告該函

C語言函式的使用小記——掌握函式引數的傳遞方式

1.概念: 函式是一個完成特定功能的程式碼模組,其程式程式碼獨立,通常要求有返回值,也可以是空值。 一般形式如下:<資料型別><函式名稱>(<形式引數說明>) { 語句序列: return[(<表示式>)]; } 其中: <函式名稱>是一個識別符號,要求符合識別符號的命名

C語言函式呼叫的傳值與傳址

首先介紹一下函式中傳值與傳址的概念: 傳值:傳值,實際是把實參的值賦值給行參,相當於copy。那麼對行參的修改,不會影響實參的值 。 傳址: 實際是傳值的一種特殊方式,只是他傳遞的是地址,不是普通的賦值,那麼傳地址以後,實參和行參都指向同一個物件,因此對形參

C語言變數名及函式名的命名規則與駝峰命名法

一、C語言變數名的命名規則:(可以字母,數字,下劃線混合使用) 1. 只能以字母或下劃線開始;2. 不能以數字開始;3. 一般小寫;4. 關鍵字不允許用(eg:int float=2//error  float 為保留字不允許用); 二、函式名的命名規則 1.見名知意;2.自定義函式函式名首字

c語言關於變長引數函式的原理

     printf函式是在串列埠資訊列印中和串列埠命令列介面功能實現中經常用的函式。呼叫方式一般是這樣子的printf("cmd =%s\r\rn", cmd_str),printf("vol=%dmV, current=%dmA.", vol,current)

c++可以把任意基本型別轉換為string, 類似於c 語言的 sprintf函式

//c++中按照格式輸入輸出 類似於c 語言中的 sprintf函式 #include<iostream> #include<sstream>//std::stringstream 標頭檔案 int main() { std::string str = "高海文"

c語言輸出函式putc_putchar_puts-printf

//輸入輸出:英文是Input/Output 簡稱IO。 //putchar:將指定的數值對應的ASCII字元列印到螢幕上。 //putc:不但指定數值,而且還可以指定列印到哪裡去。 //stdout:是指定列印到螢幕上 standard out . //putc可以指定列印到一個檔案(FILE *