日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

bpmn文件的标签为何都以bpmn2开头_C语言之两种作用域:函数的作用域与文件作用域...

發(fā)布時(shí)間:2023/12/4 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bpmn文件的标签为何都以bpmn2开头_C语言之两种作用域:函数的作用域与文件作用域... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作用域描述程序中可訪問(wèn)標(biāo)識(shí)符的區(qū)域。一個(gè)C變量的作用域可以是塊作用域、函數(shù)作用域、函數(shù)原型作用域或文件作用域。

其中,塊是用一對(duì)花括號(hào)括起來(lái)的代碼區(qū)域。例如,整個(gè)函數(shù)體是一個(gè)塊,函數(shù)中的任意復(fù)合語(yǔ)句也是一個(gè)塊。定義在塊中的變量具有塊作用域(block scope),塊作用域變量的可見(jiàn)范圍是從定義處到包含該定義的塊的末尾。

另外,雖然函數(shù)的形式參數(shù)聲明在函數(shù)的左花括號(hào)之前,但是它們也具有塊作用域,屬于函數(shù)體這個(gè)塊。所以到目前為止,我們使用的局部變量(包括函數(shù)的形式參數(shù))都具有塊作用域。因此,下面代碼中的變量cleo和patrick都具有塊作用域:

double blocky(double cleo){????double patrick = 0.0;????...????return patrick;}

聲明在內(nèi)層塊中的變量,其作用域僅局限于該聲明所在的塊:

double blocky(double cleo){????double patrick = 0.0;????int i;????for (i = 0; i < 10; i++)????{????????double q = cleo * i; // start of scope for q????????...????????patrick *= q;????}????????????????????????// end of scope for q????...?????return patrick;}

在該例中,q的作用域僅限于內(nèi)層塊,只有內(nèi)層塊中的代碼才能訪問(wèn)q。

以前,具有塊作用域的變量都必須聲明在塊的開(kāi)頭。C99標(biāo)準(zhǔn)放寬了這一限制,允許在塊中的任意位置聲明變量。因此,對(duì)于for的循環(huán)頭,現(xiàn)在可以這樣寫:

for (int i = 0; i < 10; i++)????printf("A C99 feature: i = %d", i);

為適應(yīng)這個(gè)新特性,C99把塊的概念擴(kuò)展到包括for循環(huán)、while循環(huán)、do-while循環(huán)和if語(yǔ)句所控制的代碼,即使這些代碼沒(méi)有用花括號(hào)括起來(lái),也算是塊的一部分。所以,上面for循環(huán)中的變量i被視為for循環(huán)塊的一部分,它的作用域僅限于for循環(huán)。一旦程序離開(kāi)for循環(huán),就不能再訪問(wèn)i。

函數(shù)作用域(function-scope)僅用于goto語(yǔ)句的標(biāo)簽。這意味著即使一個(gè)標(biāo)簽首次出現(xiàn)在函數(shù)的內(nèi)層塊中,它的作用域也延伸至整個(gè)函數(shù)。如果在兩個(gè)塊中使用相同的標(biāo)簽會(huì)很混亂,標(biāo)簽的函數(shù)作用域防止了這樣的事情發(fā)生。

函數(shù)原型作用域(function prototype scope)用于函數(shù)原型中的形參名(變量名),如下所示:

int mighty(int mouse, double large);

函數(shù)原型作用域的范圍是從形參定義處到原型聲明結(jié)束。這意味著,編譯器在處理函數(shù)原型中的形參時(shí)只關(guān)心它的類型,而形參名(如果有的話)通常無(wú)關(guān)緊要。

而且,即使有形參名,也不必與函數(shù)定義中的形參名相匹配。只有在變長(zhǎng)數(shù)組中,形參名才有用:

void use_a_VLA(int n, int m, ar[n][m]);

方括號(hào)中必須使用在函數(shù)原型中已聲明的名稱。變量的定義在函數(shù)的外面,具有文件作用域(file-scope)。具有文件作用域的變量,從它的定義處到該定義所在文件的末尾均可見(jiàn)??紤]下面的例子:

#include int units = 0;?????????/* a variable with file scope */void critic(void);int main(void){???...}void critic(void){???...}

這里,變量units具有文件作用域,main()和critic()函數(shù)都可以使用它(更準(zhǔn)確地說(shuō),units具有外部鏈接文件作用域,稍后講解)。由于這樣的變量可用于多個(gè)函數(shù),所以文件作用域變量也稱為全局變量(global variable)。

翻譯單元和文件

我們常常會(huì)認(rèn)為多個(gè)文件在編譯器中可能以一個(gè)文件出現(xiàn)。例如,通常在源代碼(.c擴(kuò)展名)中包含一個(gè)或多個(gè)頭文件(.h擴(kuò)展名)。頭文件會(huì)依次包含其他頭文件,所以會(huì)包含多個(gè)單獨(dú)的物理文件。

但是,C預(yù)處理實(shí)際上是用包含的頭文件內(nèi)容替換#include指令。所以,編譯器把源代碼文件和所有的頭文件都看成是一個(gè)包含信息的單獨(dú)文件。這個(gè)文件被稱為翻譯單元(translation unit)。描述一個(gè)具有文件作用域的變量時(shí),它的實(shí)際可見(jiàn)范圍是整個(gè)翻譯單元。如果程序由多個(gè)源代碼文件組成,那么該程序也將由多個(gè)翻譯單元組成。每個(gè)翻譯單元均對(duì)應(yīng)一個(gè)源代碼文件和它所包含的文件。

總結(jié)

以上是生活随笔為你收集整理的bpmn文件的标签为何都以bpmn2开头_C语言之两种作用域:函数的作用域与文件作用域...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。