溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言中的解釋局部和全局作用域實例分析

發(fā)布時間:2022-02-28 16:27:08 來源:億速云 閱讀:139 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“c語言中的解釋局部和全局作用域實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“c語言中的解釋局部和全局作用域實例分析”文章能幫助大家解決問題。

變量的作用域是什么?

在繼續(xù)了解局部和全局變量作用域之前,讓我們了解作用域的含義。

簡單來說,變量的作用域就是它在程序中的生命周期。

這意味著變量的作用域是整個程序中變量被聲明、使用和可以修改的代碼塊。

在下一節(jié)中,您將了解變量的局部作用域

C 中變量的局部作用域——嵌套塊

在本節(jié)中,您將了解局部變量如何在 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()函數(shù)有一個整數(shù)變量my_num,它在外部塊中初始化為 7 。

  • 有一個內部塊試圖將 10 添加到變量my_num。

現(xiàn)在,編譯并運行上面的程序。這是輸出:

//Output

my_num is 17

您可以看到以下內容:

  • 內部塊能夠訪問my_num在外部塊中聲明的值,并通過向其添加 7 來修改它。

  • 的值my_num現(xiàn)在是 17,如輸出中所示。

C 中變量的局部范圍——嵌套塊示例 2

? 這是另一個相關的例子:

#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()函數(shù)my_num在外部塊中有一個整數(shù)變量。

  • 另一個變量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
 }

C 中變量的局部作用域——不同的塊

在前面的示例中,您了解了如何無法從塊外部訪問嵌套內部塊中的變量。

在本節(jié)中,您將了解在不同塊中聲明的變量的局部作用域。

#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()函數(shù)內部聲明。

  • 在main()函數(shù)內部,my_num打印出的值。

  • 還有另一個函數(shù)my_func()試圖訪問和打印 my_num的值。

  • 當程序從main()函數(shù)開始執(zhí)行時,會調用到函數(shù)my_func()內部main()。

? 現(xiàn)在編譯并運行上述程序。您將收到以下錯誤消息:

Line   Message
13     error: 'my_num' undeclared (first use in this function)

如果您注意到 on line 13,該函數(shù)my_func()嘗試訪問在my_num函數(shù)內部聲明和初始化的main()變量。

因此,變量的作用域my_num被限制在main()函數(shù)內,被稱為函數(shù)局部的main()。

我們可以將這種局部作用域的概念一般性地表示如下:

{

	/*BLOCK 1*/
    // contents of BLOCK 2 cannot be accessed here
    
}


{

	/*BLOCK 2*/
    // contents of BLOCK 1 cannot be accessed here
    
}

C 中變量的全局范圍

到目前為止,您已經了解了 C 變量的局部作用域。在本節(jié)中,您將學習如何在 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在函數(shù)main()和之外聲明my_func()。

  • 我們嘗試訪問函數(shù)my_num內部main(),并打印其值。

  • 我們在函數(shù)my_func()內部調用main()函數(shù)。

  • 該函數(shù)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

在這個例子中,有兩個函數(shù) -main()和my_func()。

然而,該變量my_num不在兩個這兩個函數(shù)中。這種對任何函數(shù)都不是局部的變量被稱為具有全局作用域,稱為全局變量。

這個全局變量作用域的原理可以總結如下:

//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語言中的解釋局部和全局作用域實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI