C 部分易忘知識點(更新)

2021-08-14 06:17:52 字數 2061 閱讀 4326

#define bool int 

#define ture 1

#define false 0

布林型別變數在c++中佔1位元組空間,bool型別取值範圍僅有兩個值:true和false。例:

bool flag = true;

引入命名空間的目的是為了避免命名衝突,其關鍵字為namespace。試想兩個不同程式設計師的**整合到一起時,變數和函式重名而導致的問題會造成混亂,例如

int flag = 1;//程式設計師1宣告的變數

/*……//間隔若干行**

*/bool flag =true;//程式設計師2宣告的變數

使用命名空間解決類似上面的命名衝突問題:

namespace li 

namespace xu

使用命名空間後,使用變數有兩種方法:

①使用域解析操作符::

li::flag=0;

xu::flag=false;

②使用using宣告

using li::flag;

flag=0;//使用小李的flag

xu::flag=false;//使用小徐的flag

using宣告以後的程式中未出現指明域的flag,則都為li::flag。

using不僅可以針對命名空間的乙個變數,也可用於宣告整個命名空間。如:

namespace li 

namespace xu

using namespace li;

flag=2;//小李的flag

cnt='a';//小李的cnt

xu::cnt=2.0;//小徐的cnt

常見的 using namespace std; 語句表示在程式中採用了std命名空間中的所有識別符號,該命名空間包含c++所有標準庫,例如標頭檔案iostream.h中定義的所有變數、函式都位於std命名空間中,每次使用iostream中的變數或函式都要在前面加上std:: 很麻煩,所以使用using直接將std中的所有變數函式都宣告出來。

引用引用是c++對c的擴充,類似於指標,只是在宣告時用&代替了*,引用可以看作被引用物件的乙個別名,宣告引用時必須同時對其進行初始化。

int a = 10;

int &b = a;

cout<

10 10

0018fdb4 0018fdb4

20 20

從這段程式中我們可以看出變數a和變數b都是指向同一位址的,也即變數b是變數a的另乙個名字,也可以理解為0018fdb4空間擁有兩個名字:a和b。由於引用和原始變數都是指向同一位址的,因此通過引用也可以修改原始變數中所儲存的變數值,最終程式執行結果是輸出兩個20,可見原始變數a的值已經被引用變數b修改。

int a = 10;

const int &b = a;

b = 20; //compile error

a = 20;

宣告b為a的常引用,之後嘗試通過b來修改a變數的值,結果編譯報錯。雖然常引用無法修改原始變數的值,但是我們仍然可以通過原始變數自身來修改原始變數的值,我們用a=20;語句將a變數的值由10修改為20,這是沒有語法問題的。

引用還可以作為函式引數或函式返回值

#includeusing namespace std;

/*1.函式形參為引用型別時。呼叫函式值會將實參直接傳遞給變數,而不是將實參的拷貝傳遞給形參。

函式中修改引數值,則實參值也會被修改,與普通函式傳值呼叫有一定區別 */

vvoid swap(int &a,int &b)

/*2.函式返回值為引用。普通返回值的函式return是傳值返回,即將要返回的變數拷貝到臨時儲存空間,然後函式呼叫者從臨時空間中取到函式返回值。

*/int & add5(int &c)

int main(){

int var1=2,var2=5;

cout<<"var1="<

C易忘知識點

巨集定義中 類似於拼接,如 12 34 1234,並且如果34是乙個巨集,也會阻止其展開並拼接 將後邊的內容轉換成字串巨集定義可以巢狀 巨集定義中可以使用三目運算子,因為被認為是表示式,最終返回的是乙個結果。其實最重要就是記住巨集的用法是直接展開,然後看符不符合語法。int 左移 不溢位時符號位不變...

c基本易忘知識點

const 作用是把乙個變數視為常量,這個變數不能被改變,可以用const int a b a不能被改變,a可以改變,a c這樣是可以的,a 20這樣是不行的 int const a b 這樣的話a不能改變,而 a可以改變 register關鍵字暗示編譯器前面帶有這個關鍵字的變數將被頻繁的利用 re...

python易忘知識點記錄

python函式在定義的時候,預設引數l的值就被計算出來了,即 因為預設引數l也是乙個變數,它指向物件,每次呼叫該函式,如果改變了l的內容,則下次呼叫時,預設引數的內容就變了,不再是函式定義時的了。def a l return l print 連續執行函式a的結果 print a 結果 null p...