我的隨行筆記7 C++ Primer Plus
1.在包含自己的標頭檔案時,應用“ ”而不是< >,如“coordin.h”; 檔名在“ ”中,編譯器將先在當前工作目錄或原始碼目錄中查詢。
<iostream>, < >表示C++編譯器將在儲存標準標頭檔案的主機系統的檔案系統中查詢。
2. 同一個檔案中只能將同一個標頭檔案包含1次
#ifndef COORDIN_H_
#define COORDIN_H_
....
#endif
3、自動儲存持續性:(自動變數)在函式定義中宣告的變數(包含函式引數)的儲存持續性為自動的,它們在程式開始執行其所屬的函式或程式碼塊時被建立,執行完函式或程式碼塊時,它們使用的記憶體被釋放。自動變數它們佔的記憶體稱為棧,記憶體釋放後,值沒有被刪除,但不在被標記,棧頂恢復到原來的位置。(程式碼塊是指花括號{ }內包含的語句)
靜態儲存持續性:(靜態變數)在函式定義外定義的變數和使用關鍵字static定義的變數的儲存持續性為靜態的,在程式的整個執行過程中都存在。編譯器將分配固定的記憶體來儲存靜態變數。
動態儲存持續性:(動態變數)用new運算子分配的記憶體一直都在,直到用delete運算子將其釋放或程式結束,這種儲存持續性為動態的,有時稱為自由儲存或堆。
4、C++變數的作用域有多種,
C++函式的作用域可以是整個類或整個名詞空間(包括全域性),但不能是區域性(不能再程式碼塊內定義函式)。
5. int main()
{
int tel; ...... //tel #1
{ int tel;..... } //tel #2, 在這可{ }程式碼塊中tel #1被隱藏不可見,執行完該程式碼塊後tel #1重新可見。
}
6. 關鍵字register:建議編譯器用CPU暫存器來儲存自動變數。
7.靜態持續變數的3種連結性
int global=1000; //global在程式碼塊外宣告,有外部連結性,程式的其他檔案可使用global;
static int //one_file在程式碼塊外宣告,並用static限定符,有內部連結性,只能在包含上述程式碼的檔案中使用one_file
int main() { ...}
void fun1 (int n){
static int count=0; //count在程式碼塊內宣告,並用static限定符,無連結性
int lama=0; //靜態變數count和自動變數類似,只能在fun1 ()函式中使用。不同的是即使fun1 ()函式沒有執行count也佔記憶體
}
void fun2 (int q){ ....}
8.未被初始化的靜態變數的所有位都被設定為0;
靜態變數的初始化分為:靜態初始化 和動態初始化。靜態初始化(零初始化和常量表示式初始化)
靜態初始化:編譯後初始化 const double pi=4.0*atan(1.0);
9. 連結性為外部的變數稱為外部變數。外部變數可以被程式中的多個檔案使用,但每個使用外部變數的檔案都要宣告;但變數只能定義1次。因此有C++的兩種宣告:
定義宣告:(定義)給變數分配儲存空間
引用宣告:(宣告)不分配儲存空間,使用關鍵字extern,不初始化,如果初始化了變為定義,分配儲存空間
extern int blem; //宣告,blem在其他地方定義
extern char gr='z'; // 定義gr,分配儲存空間 double up; //定義up
10. 用const全域性變數連結性為內部的。但可以用extern關鍵字來覆蓋預設的內部連結性。
extern const int state=34; //有外部連結性
11.所有函式的儲存持續性都是靜態的,預設情況下,函式的連結性都是外部的。可以用extern(也可不用)指出函式在另一個檔案中定義,還可以用static將函式連結性設定為內部,使之只能在一個檔案中使用。
12. 使用new初始化: int * ar=new int[4] {2,6,7,3} ;
用new和new[] 呼叫函式:
void * operator new(std::size_t) ; //size_t是一個typedef,對應於合適的整型。 釋放函式:void operator delete(void *)
void * operator new[] (std::size_t) ; 釋放函式:void operator delete [] (void *)
定位new運算子:
char buffer[500];
p1=new (buffer) int[20] ;// 將Int陣列放置在buffer。
此時不需要delete [] p1; 因為buffer處於delte管轄之外。
13.建立名稱空間的關鍵詞 namespace, 任何名稱空間中的名稱不會與其他名稱空間的名稱衝突(不同名稱空間可以用相同的名稱)
namespace Jack{ double pail; void fetch(); int pal; }
訪問名稱空間的名稱用作用域解析運算子 :: 如Jack::pail=12.34; 包含名稱空間的名稱Jack::pail稱為限定名稱
14.using宣告使特定的識別符號可用: using Jack::fetch; 完成該宣告後,在有效區域可用fetch代替Jack::fetch
using編譯指令使整個名稱空間可用:using namespace Jack;名稱空間所有名稱都可用,不用作用域解析運算子 ::
15.未命名的名稱空間可替代連結性為內部的靜態變數:
函式外宣告:static int counts;
可寫為函式外宣告 : namespace { int counts; }
16.一個檔案中呼叫average(3,6)函式,返回兩個int引數的int平均值,在同一個程式的另一個檔案中呼叫,它返回返回兩個int引數的double平均值,實現方法:
在每個檔案中包含單獨的靜態函式定義,或每個檔案在未命名的名稱空間(上面的15)中定義一個合適的average()函式
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2715931/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我的隨行筆記2 C++ Primer Plus筆記C++
- 我的隨行筆記11 C++ Primer Plus筆記C++
- 我的隨行筆記10 C++ Primer Plus筆記C++
- 我的隨行筆記9 C++ Primer Plus筆記C++
- 我的隨行筆記8 C++ Primer Plus筆記C++
- 我的隨行筆記6 C++ Primer Plus筆記C++
- 我的隨行筆記5 C++ Primer Plus筆記C++
- 我的隨行筆記4 C++ Primer Plus筆記C++
- 我的隨行筆記3 C++ Primer Plus 3--指標筆記C++指標
- C++ Primer Plus隨記1C++
- C++ Primer Plus 隨記(第八章)C++
- C++ primer Plus學習筆記(第二章)C++筆記
- 《C++ Primer Plus》15.1 友元 學習筆記C++筆記
- C++ Primer筆記C++筆記
- C++ primer 筆記C++筆記
- 《C++ Primer Plus》16.1 string類 學習筆記C++筆記
- C++ Primer Plus第6版18個重點筆記C++筆記
- 【C++ Primer Plus】學習筆記--第10章 物件和類C++筆記物件
- C++ Primer Plus(四)C++
- C++ Primer Plus(三)C++
- C++ Primer Plus(一)C++
- 《C++ Primer》筆記-#include,#ifndefC++筆記
- C++ Primer Plus 第四章 複合型別 學習筆記C++型別筆記
- c++ primer 第二章閱讀筆記C++筆記
- element-plus隨筆
- 《C++ Primer》學習筆記(六):C++模組設計——函式C++筆記函式
- 《C++ Primer》學習筆記(八):標準 IO 庫C++筆記
- C++ Primer 讀書筆記 - 第一章C++筆記
- 黑馬筆記--C++基礎篇--隨筆筆記C++
- 隨筆 sqlplus / as sysdbaSQL
- 《C++ Primer》讀書筆記(第一章 開始)C++筆記
- C++ Primer 5th筆記(5)chapter5 語句C++筆記APT
- 【C++ Primer(7)】auto型別說明符C++型別
- C++ Primer 第二章 學習筆記及習題答案C++筆記
- 隨筆記筆記
- C++ Primer!C++的“倚天劍”C++
- 筆記:《C++ Primer 中文版(第5版)》 第1章 開始筆記C++
- 41、C++ Primer 4th筆記,IO庫,格式化IO操作C++筆記