C 內容(自用

2021-10-03 06:52:04 字數 2378 閱讀 3544

c++從原始檔到可執行檔案的過程

這是另乙個細緻過程的blog

c++中的控制代碼(感覺用處不大)

全域性變數和靜態變數在什麼時候初始化?

執行/編譯/鏈結時出現的錯誤

說一下c++和c的區別

設計思想上:

c++是物件導向的語言,而c是面向過程的結構化程式設計語言

(面向過程——步驟化

面向過程就是分析出實現需求所需要的步驟,通過函式一步一步實現這些步驟,接著依次呼叫即可

物件導向——行為化

物件導向是把整個需求按照特點、功能劃分,將這些存在共性的部分封裝成物件,建立了物件不是為了完成某乙個步驟,而是描述某個事物在解決問題的步驟中的行為)

語法上:

c++具有封裝、繼承和多型三種特性

c++相比c,增加多許多態別安全的功能,比如強制型別轉換、c++支援正規化程式設計,比如模板類、函式模板等

c++的const(神奇的東西)

這就是c++中的常量摺疊:指const變數(即常量)值放在編譯器的符號表中,計算時編譯器直接從表中取值,省去了訪問記憶體的時間,從而達到了優化。

而在此基礎上加上volatile修改符,即告訴編譯器該變數屬於易變的,不要對此句進行優化,每次計算時要去記憶體中取數。(但有的編譯器不會理會volatile)如果不用volatile,取const常量可能就從暫存器或符號表中取得了。

c/c++ 中指標和引用的區別

1.指標有自己的一塊空間,而引用只是乙個別名

2.使用sizeof看乙個指標的大小是4,而引用則是被引用物件的大小;

3.指標可以被初始化為null,而引用必須被初始化且必須是乙個已有物件 的引用;

4.作為引數傳遞時,指標需要被解引用才可以對物件進行操作,而直接對引用的修改都會改變引用所指向的物件;

5.可以有const指標,但是沒有const引用;

6.指標在使用中可以指向其它物件,但是引用只能是乙個物件的引用,不能 被改變;

7.指標可以有多級指標(**p),而引用只有一級;

8.指標和引用使用++運算子的意義不一樣;

9.如果返回動態記憶體分配的物件或者記憶體,必須使用指標,引用可能引起記憶體洩露。

ps.指標和引用到了彙編一層的時候,執行的命令可以說是一樣的

c++11的常用新特性(非常好!)

c++11中stl的四種智慧型指標

ps:智慧型指標是在析構函式中清楚記憶體的

由於智慧型指標本質是類,因此智慧型指標是通過析構函式釋放記憶體的!

unique_ptr代替了auto_ptr,因為前者——兩個unique_ptr不能指向乙個物件,即 unique_ptr 不共享它所管理的物件。它只能對資源管理許可權實現轉移。這意味著,記憶體資源所有權可以轉移到另乙個 unique_ptr,並且原始 unique_ptr 不再擁有此資源。

c++17新特性

c++17中的inline變數

一點注釋:曾經的c++,多個檔案引用同乙個標頭檔案時,若想使用乙個共同的變數,則須在標頭檔案中使用extern關鍵字,現在可以用inline了

這裡是extern的用法

c++內聯函式

c++四種強制型別轉換

紅黑樹的優點(非c++)

c++stl中的allocater

這個東西涉及到stl本質的記憶體使用

c++中stl容器的底層原理

c++中stl利用迭代器刪除元素

關聯容器和順序容器有不同的情況,對於list來說,它使用了不連續分配的記憶體,並且它的erase方法也會返回下乙個有效的iterator,因此上面兩種正確的方法都可以使用。

c++中stl的reserve()和risize()

c++中struct和class的區別

c++ 虛函式實現機制

靠vtpr虛函式指標和vtbl虛函式表

c++繼承過程中記憶體的分配

c++中純虛函式

c++單繼承多繼承虛繼承

堆與棧的區別和c++的記憶體分割槽

c++如何檢測記憶體洩漏

c++ volatile關鍵字解析

深入到了組合語言和暫存器層面的理解,由於debug版和release版對彙編層次的語言檢測標準不一樣,所以引到下乙個問題

debug版和release版的區別

拷貝建構函式,淺拷貝和深拷貝

模板的詳細介紹

模板和虛函式的選擇

個人理解:

虛函式更多是針對一種函式、一種操作所實現的多樣性(做麵食裡做蒸饅頭和做炒麵的區別,主料相同但做法完全不同)

模板更多是針對同一種操作裡不同型別所實現的多樣性(烤串裡烤羊肉串和豬肉串的區別,做法完全相同但主料不同)

new和delete的實現原理

override(重寫)與final(最終)兩個關鍵字

關於變數位址+1的有趣實質

整理自用 C 函式傳遞

這個本來是沒什麼需要說明的,但是偏偏是錯了幾道題,發現自己思考不夠嚴謹。函式傳遞,確實存在著值傳遞 址傳遞和引用傳遞三種。但是要搞清楚著通常是對於什麼變數而言的。以下三個是所謂的值傳遞,值傳遞和引用傳遞最簡單的表達形式 int abs int a intabs int a intabs int a ...

C 特性自用學習筆記

本文用於隨手記錄一些自己學習中碰到的c 特性。對於以下std tuple std tuple int,std string,double foo 在未有該特性前,對其解包很麻煩,使用std get要寫一大串 std cout std get 0 foo std get 1 foo std get 2...

C 自用DataGridView 分頁轉EXCEL

新增引用 com microsoft excel 11.0 object library 命名空間 用於將datagridview內容分頁轉excel 轉為excel每頁的最大轉換行數 函式中未對excel 頁可儲存最大行65535進行傳入引數限制,如有需要可自行新增判斷語句 if dgv.colu...