C 學習筆記的零零碎碎

2021-07-29 18:38:11 字數 1843 閱讀 1290

一、命名空間

什麼是命名空間:是c++的一項特性(廢話!0.o)。

自己看書看了好久不太懂命名空間是什麼?為什麼這樣用?難道不能直接包含標頭檔案後使用裡面的識別符號、函式、宣告的變數?為什麼要多此一舉?

我們都知道,在c語言的,標頭檔案包含很多定義的變數、宣告的函式等,包含標頭檔案後就可以拿來用,但是隨著程式越來越龐大,類庫等也越來越多,就會出現一些問題:

打個比方,小明寫了乙個標頭檔案1.h,裡面有定義乙個函式add(),而不巧小紅也寫了乙個標頭檔案2.h,也要定義乙個add()函式,那麼我的程式要包含兩個標頭檔案時,使用add()函式究竟是使用誰的呢?就會引發錯誤衝突。命名空間就是用來精確的圈定標頭檔案中起作用的部分的。

例子,using namespace std   使用std中所有內容,全域性通用

當然一般情況下最好不要這樣用,因為你這樣是爽了,別人要用std中已經定義的乙個物件的名稱怎麼辦?所有可以進行精確指定,可以在檔案前寫using std::cout,若果不寫,則在程式中寫std::cout、std::sin等

忘記說明一點:c++中標頭檔案沒有以.h結尾,則需要使用空間名稱編譯指令來時標頭檔案的定義對程式可用。

二、運算子過載

在前面學習中,cout<<"你是大笨蛋"中,插入運算子《看上去像左移運算子<<,同乙個運算子有不同的含義,這就是運算子過載。

相似的有&:位址運算子、按位and運算

*即表示乘法又表示指標解除引用

c++允許使用者重新定義運算子的含義。

2.1 指標

指標是乙個變數,這個變數儲存了乙個位址,這個位址所在的地方裝著目標量

指標的定義比如  int *a;a是乙個指標,*a的值表示指標a儲存位址的地方裝載的值

三、new與delete記憶體管理

在書中有描述指標時提到了一點,就是定義指標時必須初始化其值,不然將不知道指標指向何處,這可能造成危險。

比如 int * a;

*a=123;

這種寫法時,指標變數天知道裝著什麼位址,萬一其他程式有用到,再被改寫成123.。。。

所以第二句可以換成a=0x654654564等自己想要的位址進行解決。

上述這些方法一般是將變數的位址賦給指標,在c++中使用new運算子進行更簡單的分配記憶體的方式

int * a = new int;

僅此一句,定義了乙個指標a,還找了乙個適合整形變數的記憶體塊的位址賦給了指標a。沒有變數名。簡單方便。

使用new還有乙個必須要注意的是得成對使用delete a;釋放記憶體,不然,就無法呼叫被new占用的記憶體了。

接下來說明一下陣列使用new分配記憶體的用法以及好處

1.定義方式

int * a = new int [10]

2.釋放方式

delete a;

常規建立陣列的方式叫做靜態聯編,而使用new的方式叫做動態聯編,前者是在程式編譯時為陣列分配記憶體,後者是在程式執行時為陣列分配記憶體。

這裡,指標位址裝載陣列第乙個元素的位址,可以使用a[2]來指定第三個元素。

指標與陣列的一些特性:

指標裝的是位址,自身是變數,指標進行+1操作時,值會增加其指向的資料型別的位元組數

new用來創立陣列通用可以用來建立結構也可以用來建立類

比如name是乙個結構體名,則 name * pa = new name; 定義了乙個結構體不過沒有名字,那麼沒有名字怎麼使用運算子.去指定成員呢?這時可以使用->運算子。

pa->*** 即可。

四、cout函式輸出指標資料

如果a是乙個指標,那麼cout 《a 會輸出什麼呢?

如果是非字元指標,那麼輸出位址,反之輸出字元。那麼要輸出字元指標的位址怎麼辦,可以使用cout《(int *)a,使用強制型別轉換符就可以了。

C 學習零零碎碎 未完

好久沒有看c 語法書了,之前看到了類相關的知識看到一半後就停了,工作中使用時感覺很吃力,現在重新拿起c primer plus 從新看一篇,打算記下來一下自己看的一些精簡知識點,留作專門複習使用。1 結構的預設訪問型別是public,類為private。然後就使用習慣上來說,c 使用類實現類描述,結...

最近的零零碎碎的做了python的筆記以便以後翻閱

python本身是c語言寫成的,所以作為筆記,目的就是速記以便之後和c語言做對比。2.4 運算子 表示乘方運算子,具有運算子的最高優先順序。除法運算子,對浮點數的除法 結果四捨五入 2.5 變數和賦值 變數名大小寫敏感,無需宣告變數的型別。不支援自增和自減的運算 2.6數字 支援複數運算 比如 j ...

ansj分詞器和solr結合的零零碎碎

size large 在solr4.8使用的章節裡我講了很多有關ansj分詞器的用法以及相關描述和個人看法。這裡新開一篇專門描述。傳送門 作者是個年輕的技術男,github上有他的微博,可以和他溝通交流問題 加粉吧,雖然微博現在不流行了,但是這麼好的分詞器的作者才800多粉絲看著心疼 ansj附加詞...