#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;
void swap(int &a,int &b)/*1.函式形參為引用型別時。呼叫函式值會將實參直接傳遞給變數,而不是將實參的拷貝傳遞給形參。
函式中修改引數值,則實參值也會被修改,與普通函式傳值呼叫有一定區別 */
v
/*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...