程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C++中extern使用

C++中extern使用

編輯:關於C語言

C++中extern是指全局的意思。它一般有兩個方面的用途:

1、聲明變量

  首先說一下聲明和定義的區別:

  ①變量的定義:用於為變量分配存儲空間,還可以為變量指定初始值。在一個程序中,變量有且僅有一個定義。

  ②變量的聲明:用於向程序表明變量的類型和名字。定義也是聲明:當定義變量時我們聲明了它的類型和名字。可以通過使用extern 關鍵字聲明變量名而不定義它。例如:

extern int i; //聲明一個變量i,但是並沒有定義
int i; //聲明並且定義了一個變量i

  extern 聲明不是定義,也不分配存儲空間。事實上,它只是說明變量定義在程序的其他地方。程序中變量可以聲明多次,但只能定義一次。

  只有當聲明也是定義時,聲明才可以有初始化式,因為只有定義才分配存儲空間。初始化式必須要有存儲空間來進行初始化。如果聲明有初始化式,那麼它可被當作是定義,即使聲明標記為 extern例如:

extern int i = 0;

  雖然使用了 extern ,但是這條語句還是定義了i,分配並初始化了存儲空間。只有當extern聲明位於函數外部時,才可以含有初始化式。

  因為已初始化的extern聲明被當作是定義,所以該變量任何隨後的定義都是錯誤的:例如:

extern int i = 0;
int i; //報錯,重復的定義

  同樣,隨後的含有初始化式的extern聲明也是錯誤的:

extern int i = 0; // 定義
extern int i; // 只聲明,正確
extern int i = 0; // 重復定義,錯誤


2、聲明const變量

  const 限定符定義的變量是一個常量。例如:

constinti = 0;

  定義i為常量並初始化為0。現在這個左值是不可修改的。任何修改i的嘗試都會導致編譯錯誤。例如:

i = 1; // 報錯,不能修改const變量

  正是因為常量在定義後就不能被修改,所以定義時必須初始化。例如:

const int i = 0;
const int j; // 錯誤,const變量未被初始化

  在全局作用域裡定義非 const 變量時,它在整個程序中都可以訪問。我們可以把一個非 const 變更定義在一個文件中,假設已經做了合適的聲明,就可在另外的文件中使用這個變量:

// file_1.cpp
int i; // 定義i
// file_2.cpp
extern int i; // 使用file_1中定義的i
i++;

  與其他變量不同,除非特別說明,在全局作用域聲明的const變量是定義該對象的文件的局部變量。此變量只存在於那個文件中,不能被其他文件訪問。通過指定const變更為extern,就可以在整個程序中訪問const對象。例如:

// file_1.cpp
// 定義並且初始化const變量i
extern const int i = 0;
// file_2.cpp
extern const int i; // 使用file_1中定義的const變量i
if(i==0)cout<<"success!"<<endl;//使用file_1中定義的const變量i






本文出自 “我的學習筆記” 博客,請務必保留此出處http://6924918.blog.51cto.com/6914918/1266936

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved