【C++】花括號作用域

花括號作用域

//作用域,可以看作一個變量的有效使用區域

//函數外部也是一個大的作用域,暫且記作:作用域0
void Fun()
{
    //函數內部作用域,暫且記作:作用域1
    
    while()
    {
        //循環內部,暫且記作:作用域2
         if()
        {
            //if內部,也是一個作用域,暫且記作:作用域3
        }
    }
    
    if()
    {
        //if內部,也是一個作用域,暫且記作:作用域4
    }
    
    {
        //我只寫個花括號,這個也是一個作用域,暫且記作:作用域5
    }
}

從上面代碼塊兒,可以看到,
作用域0,直接包含作用域1,同時,又間接包含作用域2、3、4、5;(作用域1中聲明的變量,可以在其本身,以及2、3、4、5中使用,但是不能在1的上級作用域使用,也就是作用域0,函數外部。)
作用域1,直接包含作用域2、4、5,同時,又間接包含作用域3;(作用域2中聲明的變量可以在作用域2,以及2的下一級作用域3中使用,但是不能在0、1、4、5中使用。)
變量的使用,只能是從變量聲明的作用域,向下延伸,不能反向,不能向上一級作用域。也就是說,只能在當前作用域或者子級作用域下面使用。

變量的聲明的位置

下面,簡單說一下C/C++中的變量聲明。
標準的C中,有嚴格的規範,變量的聲明必須在作用域的起始部分。(如有代碼疑問,可能是您在C++中把C混淆了,或者您的編譯器的標準不嚴格。嚴格的一般應該是linux或unix下的C標準。)
甚至,函數內部的所有變量聲明,都人爲的嚴格要求在函數起始部分,防止變量的隨處聲明和定義。(這一點,可能和您的老師或者師傅,以及有的書本中,視頻中描述的不一樣,那是因爲現在多數編程語言已經不這麼要求,而他們混淆了規則。)請記住,嚴格的標準的C,變量的聲明是在作用域或者函數的起始部分。個人建議,統一放在函數的起始部分。
優點

  1. 開發階段,一般有的函數體很龐大(遇到這種情況,一般是函數的設計問題,但也不排除必要性。)面對如此龐大的函數體,變量的聲明統一在函數起始位置,可以防止變量使用的時候,未聲明,尤其使用goto語句的時候,很容易就跳過了某些變量的聲明。

  2. 便於變量的多次有效利用,也就是,一次聲明,多次初始化,多次利用。

  3. 便於閱讀..

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章