久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

您好,歡迎進入深圳市穎特新科技有限公司官方網站!

您現在的位置:首頁 新聞資訊 >> 新聞頭條 >> 局部變量與全局變量
新聞資訊
NEWS INFORMATION

局部變量與全局變量

發布時間:2019-05-22

在《C語言函數的參數和返回值形參變量要等到函數被調用時才分配內存,調用結束后立即釋放內存。這說明形參變量的作用域非常有限,只能在函數內部使用,離開該函數就無效了。所謂作用域(Scope),就是變量的有效范圍。

不僅對于形參變量,C語言中所有的變量都有自己的作用域。決定變量作用域的是變量的定義位置。

局部變量

定義在函數內部的變量稱為局部變量(Local Variable),它的作用域僅限于函數內部, 離開該函數后就是無效的,再使用就會報錯。例如:

  1. int f1(int a){
  2. int b,c; //a,b,c僅在函數f1()內有效
  3. return a+b+c;
  4. }
  5. int main(){
  6. int m,n; //m,n僅在函數main()內有效
  7. return 0;
  8. }

幾點說明:
1) 在 main 函數中定義的變量也是局部變量,只能在 main 函數中使用;同時,main 函數中也不能使用其它函數中定義的變量。main 函數也是一個函數,與其它函數地位平等。

2) 形參變量、在函數體內定義的變量都是局部變量。實參給形參傳值的過程也就是給局部變量賦值的過程。

3) 可以在不同的函數中使用相同的變量名,它們表示不同的數據,分配不同的內存,互不干擾,也不會發生混淆。

4) 在語句塊中也可定義變量,它的作用域只限于當前語句塊。

全局變量

在所有函數外部定義的變量稱為全局變量(Global Variable),它的作用域默認是整個程序,也就是所有的源文件,包括 .c 和 .h 文件。例如:

  1. int a, b; //全局變量
  2. void func1(){
  3. //TODO:
  4. }
  5. float x,y; //全局變量
  6. int func2(){
  7. //TODO:
  8. }
  9. int main(){
  10. //TODO:
  11. return 0;
  12. }

a、b、x、y 都是在函數外部定義的全局變量。C語言代碼是從前往后依次執行的,由于 x、y 定義在函數 func1() 之后,所以在 func1() 內無效;而 a、b 定義在源程序的開頭,所以在 func1()、func2() 和 main() 內都有效。

局部變量和全局變量的綜合示例

【示例1】輸出變量的值:

  1. #include <stdio.h>
  2. int n = 10; //全局變量
  3. void func1(){
  4. int n = 20; //局部變量
  5. printf("func1 n: %d\n", n);
  6. }
  7. void func2(int n){
  8. printf("func2 n: %d\n", n);
  9. }
  10. void func3(){
  11. printf("func3 n: %d\n", n);
  12. }
  13. int main(){
  14. int n = 30; //局部變量
  15. func1();
  16. func2(n);
  17. func3();
  18. //代碼塊由{}包圍
  19. {
  20. int n = 40; //局部變量
  21. printf("block n: %d\n", n);
  22. }
  23. printf("main n: %d\n", n);
  24. return 0;
  25. }

運行結果:
func1 n: 20
func2 n: 30
func3 n: 10
block n: 40
main n: 30

代碼中雖然定義了多個同名變量 n,但它們的作用域不同,在內存中的位置(地址)也不同,所以是相互獨立的變量,互不影響,不會產生重復定義(Redefinition)錯誤。

1) 對于 func1(),輸出結果為 20,顯然使用的是函數內部的 n,而不是外部的 n;func2() 也是相同的情況。

當全局變量和局部變量同名時,在局部范圍內全局變量被“屏蔽”,不再起作用。或者說,變量的使用遵循就近原則,如果在當前作用域中存在同名變量,就不會向更大的作用域中去尋找變量。

2) func3() 輸出 10,使用的是全局變量,因為在 func3() 函數中不存在局部變量 n,所以編譯器只能到函數外部,也就是全局作用域中去尋找變量 n。

3) 由{ }包圍的代碼塊也擁有獨立的作用域,printf() 使用它自己內部的變量 n,輸出 40。

3) C語言規定,只能從小的作用域向大的作用域中去尋找變量,而不能反過來,使用更小的作用域中的變量。對于 main() 函數,即使代碼塊中的 n 離輸出語句更近,但它仍然會使用 main() 函數開頭定義的 n,所以輸出結果是 30。

【示例2】根據長方體的長寬高求它的體積以及三個面的面積。

  1. #include <stdio.h>
  2. int s1, s2, s3; //面積
  3. int vs(int a, int b, int c){
  4. int v; //體積
  5. v = a * b * c;
  6. s1 = a * b;
  7. s2 = b * c;
  8. s3 = a * c;
  9. return v;
  10. }
  11. int main(){
  12. int v, length, width, height;
  13. printf("Input length, width and height: ");
  14. scanf("%d %d %d", &length, &width, &height);
  15. v = vs(length, width, height);
  16. printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3);
  17. return 0;
  18. }

運行結果:
Input length, width and height: 10 20 30↙
v=6000, s1=200, s2=600, s3=300

根據題意,我們希望借助一個函數得到三個值:體積 v 以及三個面的面積 s1、s2、s3。遺憾的是,C語言中的函數只能有一個返回值,我們只能將其中的一份數據,也就是體積 v 放到返回值中,而將面積 s1、s2、s3 設置為全局變量。全局變量的作用域是整個程序,在函數 vs() 中修改 s1、s2、s3 的值,能夠影響到包括 main() 在內的其它函數。

聯系方式0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
99日在线视频| 精品中文字幕av| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 最新av网址在线观看| 亚洲第一区第二区第三区| 黄色三级视频片| 国内外成人免费在线视频| 婷婷丁香激情网| 一本色道久久亚洲综合精品蜜桃| www.激情小说.com| 国产女同无遮挡互慰高潮91| 伊人精品视频在线观看| 日本男女交配视频| 欧美三级在线观看视频| 日本成人黄色网| 免费看涩涩视频| 国产黑丝在线视频| 三上悠亚久久精品| 日韩免费毛片视频| 一级黄色片在线免费观看| 青少年xxxxx性开放hg| 屁屁影院ccyy国产第一页| 欧美色图色综合| 欧美 日韩 国产 激情| 欧美国产日韩另类| 免费拍拍拍网站| 国产又大又黄又粗又爽| 亚洲天堂第一区| 久久国产色av免费观看| 黄瓜视频免费观看在线观看www| www.夜夜爱| gai在线观看免费高清| 精品国产一区二区三区无码| 日日摸天天爽天天爽视频| 大桥未久一区二区| 欧美三级午夜理伦三级| 9色视频在线观看| 亚洲xxxx2d动漫1| 91成人综合网| 视频一区二区视频| 亚洲欧洲日本精品| 免费看国产曰批40分钟| 精品少妇人妻av一区二区| 成人精品小视频| 欧美图片激情小说| 国产免费一区二区三区四在线播放| 日本韩国欧美在线观看| www.18av.com| 毛毛毛毛毛毛毛片123| 日本免费观看网站| 日韩欧美国产综合在线| 国产在线无码精品| 三级黄色片播放| 日日躁夜夜躁aaaabbbb| 国产裸体舞一区二区三区| 黄色a级片免费看| 五月天男人天堂| 粉色视频免费看| 一区二区成人网| 日韩一级片播放| 苍井空浴缸大战猛男120分钟| 一二三四视频社区在线| 久久人人爽人人爽人人av| 污污污污污污www网站免费| 成人在线免费观看网址| www.亚洲一区二区| 男女h黄动漫啪啪无遮挡软件| 超碰中文字幕在线观看| 欧美视频亚洲图片| 男同互操gay射视频在线看| 特级黄色片视频| 黄色免费高清视频| 丁香婷婷综合激情| 国产精品后入内射日本在线观看| 日本毛片在线免费观看| 国产v片免费观看| 丝袜老师办公室里做好紧好爽| 日韩av资源在线| 手机视频在线观看| 国产欧美综合一区| 少妇人妻在线视频| 成人午夜激情av| 大地资源第二页在线观看高清版| 亚洲免费视频播放| 99爱视频在线| 国产精品久久久久久9999| 高清无码一区二区在线观看吞精| 美脚丝袜脚交一区二区| 欧美日韩在线成人| 男人的天堂视频在线| 成年人视频观看| 波多野结衣网页| 国产精品无码人妻一区二区在线| 天堂中文视频在线| 欧美成人精品免费| 亚州精品一二三区| 黄色一级片黄色| 成人免费在线观看视频网站| 亚洲精品国产suv一区88| 国产男女激情视频| 久久国产精品免费观看| 欧美黄色一级片视频| 国产一级不卡视频| 天堂av8在线| 逼特逼视频在线| 9色视频在线观看| 久久久精品高清| wwwxxx黄色片| 男人天堂a在线| 成年人黄色在线观看| 91看片在线免费观看| 91视频 -- 69xx| 欧美国产视频一区| 四虎1515hh.com| 999在线观看| 别急慢慢来1978如如2| 免费无遮挡无码永久视频| www.日本在线视频| www.国产二区| 最新av在线免费观看| 深爱五月综合网| 91丝袜超薄交口足| 激情久久综合网| 欧美视频亚洲图片| 国产精品探花在线播放| 污污视频在线免费| 国内av免费观看| 日韩欧美理论片| 婷婷中文字幕在线观看| aaa一级黄色片| 欧美在线a视频| 久久视频免费在线| 97在线国产视频| 欧美三级一级片| mm1313亚洲国产精品无码试看| 日韩精品一区二区三区色欲av| av免费中文字幕| 国产天堂在线播放| 亚洲一级片网站| www.偷拍.com| 日韩视频免费播放| 亚洲爆乳无码专区| 日韩高清第一页| 欧美一级特黄aaaaaa在线看片| 91成人综合网| 老熟妇仑乱视频一区二区| 91香蕉视频导航| 干日本少妇视频| 亚洲中文字幕无码专区| 日韩欧美在线免费观看视频| 欧美男女交配视频| 蜜桃视频成人在线观看| 99视频在线免费播放| 中文字幕网av| 国产精品igao激情视频| 精品国产成人av在线免| 激情成人在线观看| 黄色影院一级片| 亚洲一区二区偷拍| 波多野结衣家庭教师在线播放| 狠狠躁狠狠躁视频专区| www.夜夜爱| 91丨九色丨蝌蚪| 国产婷婷一区二区三区| 在线免费视频a| 青青青在线视频播放| 99re精彩视频| 啊啊啊一区二区| 大陆极品少妇内射aaaaaa| 手机在线看福利| 日韩av在线第一页| 日韩人妻精品一区二区三区| 日韩 欧美 高清| 免费视频爱爱太爽了| 欧美性受xxxx黒人xyx性爽| 欧美极品欧美精品欧美图片| 男人草女人视频| 红桃视频一区二区三区免费| caoporn超碰97| 一女被多男玩喷潮视频| 一本大道东京热无码aⅴ| 手机免费av片| 尤蜜粉嫩av国产一区二区三区| 国产午夜福利100集发布| 天堂av在线中文| 国产经典久久久| 黄瓜视频免费观看在线观看www| 欧美在线观看视频网站| 18禁免费无码无遮挡不卡网站| 97中文字幕在线| 久久免费一级片| 97在线免费视频观看| 成人高清dvd| 日韩激情视频一区二区| 热久久最新网址| 97中文字幕在线| 亚洲一区二区三区av无码| 黄色激情在线视频| 福利视频免费在线观看| 国产真实老熟女无套内射|