c語言域的定義,C語言的作用域

本文目錄一覽:

在C語言中變數的作用域是什麼含義?

C程序的標識符作用域有三種:局部、全局、文件。標識符的作用域決定了程序中的哪些語句可以使用它,換句話說,就是標識符在程序其他部分的可見性。通常,標識符的作用域都是通過它在程序中的位置隱式說明的。

C語言函數定義域

作用域:起作用的區域

變數按作用域分:

局部變數:定義在函數內部的變數

全局變數 :定義在函數外部的變數

變數按存儲類型分

auto:自動類型

作用域決定變數的生命周期

注意點:如果局部變數和全局變數起衝突,局部變數此時會成瞎子,看不到全局變數的存在

函數遞歸

C語言函數三要素是什麼

C語言函數三要素是:定義域、值域和對應法則。

一,C語言函數定義域

(1)無參函數定義的一般形式如下:

類型標識符  函數名(){

聲明部分

語句

}

其中類型標識符和函數名稱為函數頭。類型標識符指明了本函數的類型,函數的類型實際上是函數返回值的類型。該類型標識符與前面介紹的各種說明符相同。函數名是由用戶定義的標識符,函數名後有一個空括弧,其中無參數,但括弧不可少。

{}中的內容稱為函數體。在函數體中聲明部分,是對函數體內部所用到的變數的類型說明。

在很多情況下都不要求無參函數有返回值,此時函數類型符可以寫為void。

這裡,只把main改為Hello作為函數名,其餘不變。Hello函數是一個無參函數,當被其它函數調用時,輸出Hello world字元串。

(2)有參函數定義的一般形式

有參函數定義的一般形式如下:

類型標識符  函數名(形式參數表列){

聲明部分

語句

}

有參函數比無參函數多了一個內容,即形式參數表列。在形參表中給出的參數稱為形式參數,它們可以是各種類型的變數,各參數之間用逗號間隔。在進行函數調用時,主調函數將賦予這些形式參數實際的值。形參既然是變數,必須在形參表中給出形參的類型說明。

例如,定義一個函數,用於求兩個數中的大數,可寫為:

第一行說明max函數是一個整型函數,其返回的函數值是一個整數。形參為a,b,均為整型量。a,b的具體值是由主調函數在調用時傳送過來的。在{}中的函數體內,除形參外沒有使用其它變數,因此只有語句而沒有聲明部分。在max函數體中的return語句是把a(或b)的值作為函數的值返回給主調函數。有返回值函數中至少應有一個return語句。

在C程序中,一個函數的定義可以放在任意位置,既可放在主函數main之前,也可放在main之後。例如:可把max 函數置在main之後,也可以把它放在main之前。修改後的程序如下所示。

二,C語言的值域

函數的值是指函數被調用之後, 執行函數體中的程序段所取得的並返回給主調函數的值。如調用正弦函數取得正弦值,調用例5.1的max函數取得的最大數等。對函數的值(或稱函數返回值)有以下一些說明:

1. 函數的值只能通過return語句返回主調函數。return 語句的一般形式為:

return 表達式;

或者為:

return (表達式);

該語句的功能是計算表達式的值,並返回給主調函數。 在函數中允許有多個return語句,但每次調用只能有一個return 語句被執行, 因此只能返回一個函數值。

2. 函數值的類型和函數定義中函數的類型應保持一致。 如果兩者不一致,則以函數類型為準,自動進行類型轉換。 3. 如函數值為整型,在函數定義時可以省去類型說明。

4. 不返回函數值的函數,可以明確定義為「空類型」, 類型說明符為「void」。如例5.3中函數s並不向主函數返函數值,因此可定義為:

void s(int n)

{ ……

}

三,C語言函數對應法則(C語言函數的調用)

函數調用的一般形式為:

函數名(實參列表);

實參可以是常數、變數、表達式等,多個實參用逗號,分隔。

在C語言中,函數調用的方式有多種,例如:

在函數調用中還應該注意的一個問題是求值順序的問題。所謂求值順序是指對實參列表中各個參數是自左向右使用呢,還是自右向左使用。對此,各系統的規定不一定相同。

【示例】在VC6.0下運行以下代碼。

運行結果:

8 7 6 7

可見VC 6.0是按照從右至左的順序求值。如果按照從左至右求值,結果應為:

9  10  9  8

函數的嵌套調用

函數不能嵌套定義,但可以嵌套調用,也就是在一個函數的定義中出現對另一個函數的調用。這樣就出現了函數的嵌套調用,即在被調函數中又調用其它函數。

【示例】計算sum = 1! + 2! + 3! + … + (n-1)! + n!

分析:可以編寫兩個函數,一個用來計算階乘,一個用來計算累加的和。

運行結果:

1!+2!+…+9!+10! = 1215752192

函數聲明和函數原型

C語言代碼由上到下依次執行,函數定義要出現在函數調用之前。

但是,如果在函數調用前進行了函數聲明,那麼函數定義就可以出現在任何地方了,甚至是其他文件。

函數聲明的一般形式為:

返回值類型  函數名( 類型 形參, 類型 形參… );

或為:

返回值類型  函數名( 類型, 類型…);

函數聲明給出了函數名、返回值類型、參數列表(參數類型)等與該函數有關的信息,稱為函數原型。

函數原型的作用是告訴編譯器與該函數有關的信息,讓編譯器知道函數的存在,以及存在的形式,即使函數暫時沒有定義,也不會出錯。

更改上面的代碼,將 factorial 和 sum 函數的定義放到 main 函數後面:

運行結果:

1!+2!+…+9!+10! = 1215752192

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/199510.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 10:22
下一篇 2024-12-05 10:22

相關推薦

  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python符號定義和使用方法

    本文將從多個方面介紹Python符號的定義和使用方法,涉及注釋、變數、運算符、條件語句和循環等多個方面。 一、注釋 1、單行注釋 # 這是一條單行注釋 2、多行注釋 “”” 這是一…

    編程 2025-04-29
  • Python中的隊列定義

    本篇文章旨在深入闡述Python中隊列的定義及其應用,包括隊列的定義、隊列的類型、隊列的操作以及隊列的應用。同時,我們也會為您提供Python代碼示例。 一、隊列的定義 隊列是一種…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29

發表回復

登錄後才能評論