深夜美女视频一区二区_91sao在线看片水片_亚洲日韩国语_精品中文字幕久久边人妻_高潮喷水香蕉视频色_白洁国产剧情Av手机在线_国产精品情侣呻吟_天空影院播放免费完整版视频_少妇高潮惨叫喷水在线观看_公交车大龟廷进我身体里

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

C++ 作用域及命名空間

發(fā)布時間:2023-12-05 13:39:15

變量僅在創(chuàng)建區(qū)域內(nèi)可用。這稱為作用域(scope)。本主主要介紹一下C++中的作用域(scope)及命名空間。

1、局部變量

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

例如,

#include <iostream>
using namespace std;
int fn(int a){
   int b,c;  //a,b,c僅在函數(shù)fn()內(nèi)有效
   return a+b+c;
}
int main(){
   int m,n;  //m,n僅在函數(shù)main()內(nèi)有效
   return 0;
}


2、全局變量

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

例如,

#include <iostream>
using namespace std;
int a, b=3;  //全局變量
void fn(){
    cout << a << endl << b << endl;
}
int main(){
   fn();
   cout << a << endl << b << endl;
   return 0;
}


3、局部變量與全局變量的區(qū)別

1)局部變量是聲明在塊或者函數(shù)內(nèi)部的變量。局部變量的作用域局限于該塊或者函數(shù)。局部變量如果沒有初始化,將包含垃圾數(shù)據(jù)。

2)全局變量是在所有塊和函數(shù)之前聲明的變量。全局變量對所有在它之后聲明的函數(shù)有效。全局變量有默認(rèn)值初始化,如0。

注意:如果要調(diào)用另外一個文件中的全局變量,如果再聲明一個同名的全局變量,那么編譯器會因為重名報錯,這個時候就要使用extern變量。extern聲明告訴編譯器這個變量的定義在其他文件中,所以并不會為它分配內(nèi)存。

4、靜態(tài)局部變量和靜態(tài)全局變量區(qū)別

1)非靜態(tài)全局變量的作用域是整個源程序 ,當(dāng)一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。

2)靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效,在同一源程序的其它源文件中不能使用它。


5、C++命名空間

命名空間是ANSI C++引入的可以由用戶命名的作用域,用來處理程序中常見的同名沖突。可以建立多個相互分割的作用域,把實體進(jìn)行分隔,以免名字沖突。

1)訪問命名空間中作用域內(nèi)實體

命名空間名::命名空間成員名;

2)標(biāo)準(zhǔn)命名空間std

C++標(biāo)準(zhǔn)庫所有標(biāo)識符都是在一個名為std的命名空間中定義的,或者說標(biāo)準(zhǔn)頭文件中函數(shù)、類和對象模板是在命名空間std中定義的??梢栽谖募_頭加入 using namespace std;使用時就可以不寫std::。

使用示例:

#include <iostream> 
using namespace std;  
namespace Animal
{
   void Show()
   {
       //如果上面沒using namespace std; 則使用cout需要std::cout
       cout << "Animal" << endl;
   }
}
namespace Person
{
   void Show()
   {
       //如果上面沒using namespace std; 則使用cout需要std::cout
       cout << "Person" << endl;
   }
}
int main()
{
   Animal::Show();
   Person::Show();
   return 0;
}



以上為本次所有分享內(nèi)容



上一篇:C++ 存儲類型
下一篇:C++ 預(yù)處理命令

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄