您好,登錄后才能下訂單哦!
這篇文章主要介紹“c語言中的解釋局部和全局作用域實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“c語言中的解釋局部和全局作用域實例分析”文章能幫助大家解決問題。
在繼續了解局部和全局變量作用域之前,讓我們了解作用域的含義。
簡單來說,變量的作用域就是它在程序中的生命周期。
這意味著變量的作用域是整個程序中變量被聲明、使用和可以修改的代碼塊。
在下一節中,您將了解變量的局部作用域
在本節中,您將了解局部變量如何在 C 中工作。您將首先編寫幾個示例,然后概括作用域原則。
? 這是第一個例子:
#include <stdio.h> int main() { int my_num = 7; { //add 10 my_num my_num = my_num +10; //or my_num +=10 - more succinctly printf("my_num is %d",my_num); } return 0; }
讓我們了解一下上面的程序是做什么的。
在 C 中,您用 {}分隔代碼塊。左花括號和右花括號分別表示塊的開始和結束。
該main()函數有一個整數變量my_num,它在外部塊中初始化為 7 。
有一個內部塊試圖將 10 添加到變量my_num。
現在,編譯并運行上面的程序。這是輸出:
//Output my_num is 17
您可以看到以下內容:
內部塊能夠訪問my_num在外部塊中聲明的值,并通過向其添加 7 來修改它。
的值my_num現在是 17,如輸出中所示。
? 這是另一個相關的例子:
#include <stdio.h> int main() { int my_num = 7; { int new_num = 10; } printf("new_num is %d",new_num); //this is line 9 return 0; }
在這個程序中,main()函數my_num在外部塊中有一個整數變量。
另一個變量new_num在內部塊中初始化。內部塊嵌套在外部塊內。
我們試圖new_num在外部塊中訪問和打印內部塊的值。
如果您嘗試編譯上面的代碼,您會注意到它沒有成功編譯。您將收到以下錯誤消息:
Line Message 9 error: 'new_num' undeclared (first use in this function)
這是因為變量new_num是在內部塊中聲明的,其作用域僅限于內部塊。換句話說,它對于內部塊是本地的,不能從外部塊訪問。
基于上述觀察,讓我們寫下以下變量局部作用域的通用原則:
{ /*OUTER BLOCK*/ { //contents of the outer block just before the start of this block //CAN be accessed here /*INNER BLOCK*/ } //contents of the inner block are NOT accessible here }
在前面的示例中,您了解了如何無法從塊外部訪問嵌套內部塊中的變量。
在本節中,您將了解在不同塊中聲明的變量的局部作用域。
#include <stdio.h> int main() { int my_num = 7; printf("%d",my_num); my_func(); return 0; } void my_func() { printf("%d",my_num); }
在上面的例子中,
整型變量my_num在main()函數內部聲明。
在main()函數內部,my_num打印出的值。
還有另一個函數my_func()試圖訪問和打印 my_num的值。
當程序從main()函數開始執行時,會調用到函數my_func()內部main()。
? 現在編譯并運行上述程序。您將收到以下錯誤消息:
Line Message 13 error: 'my_num' undeclared (first use in this function)
如果您注意到 on line 13,該函數my_func()嘗試訪問在my_num函數內部聲明和初始化的main()變量。
因此,變量的作用域my_num被限制在main()函數內,被稱為函數局部的main()。
我們可以將這種局部作用域的概念一般性地表示如下:
{ /*BLOCK 1*/ // contents of BLOCK 2 cannot be accessed here } { /*BLOCK 2*/ // contents of BLOCK 1 cannot be accessed here }
到目前為止,您已經了解了 C 變量的局部作用域。在本節中,您將學習如何在 C 中聲明全局變量。
? 讓我們從一個例子開始。
#include <stdio.h> int my_num = 7; int main() { printf("my_num can be accessed from main() and its value is %d\n",my_num); //call my_func my_func(); return 0; } void my_func() { printf("my_num can be accessed from my_func() as well and its value is %d\n",my_num); }
在上面的例子中,
該變量my_num在函數main()和之外聲明my_func()。
我們嘗試訪問函數my_num內部main(),并打印其值。
我們在函數my_func()內部調用main()函數。
該函數my_func()還嘗試訪問 的值my_num,并將其打印出來。
該程序編譯沒有任何錯誤,輸出如下所示:
//Output my_num can be accessed from main() and its value is 7 my_num can be accessed from my_func() as well and its value is 7
在這個例子中,有兩個函數 -main()和my_func()。
然而,該變量my_num不在兩個這兩個函數中。這種對任何函數都不是局部的變量被稱為具有全局作用域,稱為全局變量。
這個全局變量作用域的原理可以總結如下:
//all global variables are declared here function1() { // all global variables can be accessed inside function1 } function2() { // all global variables can be accessed inside function2 }
關于“c語言中的解釋局部和全局作用域實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。