最新国产AV资源网_亚洲熟女AV天堂五月天_中文字幕丶东京热_中文字幕乱码免费高清视频

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

C++ 作用域及命名空間

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

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

1、局部變量

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

例如,

#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)是整個(gè)程序,也就是所有的源文件,包括 .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ù)之前聲明的變量。全局變量對(duì)所有在它之后聲明的函數(shù)有效。全局變量有默認(rèn)值初始化,如0。

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

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

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

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


5、C++命名空間

命名空間是ANSI C++引入的可以由用戶命名的作用域,用來處理程序中常見的同名沖突??梢越⒍鄠€(gè)相互分割的作用域,把實(shí)體進(jìn)行分隔,以免名字沖突。

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

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

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

C++標(biāo)準(zhǔn)庫所有標(biāo)識(shí)符都是在一個(gè)名為std的命名空間中定義的,或者說標(biāo)準(zhǔn)頭文件中函數(shù)、類和對(duì)象模板是在命名空間std中定義的。可以在文件開頭加入 using namespace std;使用時(shí)就可以不寫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++ 存儲(chǔ)類型
下一篇:C++ 預(yù)處理命令

歡迎登錄盛圖科技

歡迎注冊(cè)盛圖科技

已有賬號(hào),立即登錄