C 基礎知識回顧總結

2021-09-08 05:25:56 字數 1738 閱讀 7005

為何需要在c++檔案中寫這段**?下面我們將講一下緣由:

首先說一下命名空間的意義:命名空間是用來組織和重用**的編譯單元。namespace(名字空間),是為了解決命名衝突的問題而引入的概念。通過使用 namespace ***(就是***使用的範圍),你所使用的庫函式或變數就是在該名字空間中定義的,這樣一來就不會引起不必要的衝突了。其中c++標準程式庫中的所有識別符號都被定義於乙個名為std(standard)的namespace中。

舉例:一 :和格式不一樣,前者沒有字尾。兩者是兩個不同的檔案。字尾為.h的標頭檔案c++標準已經明確提出不支援了。因此,當使用時,相當於在c中呼叫庫函式,使用的是全域性命名空間,也就是早期的c++實現;當使用的時候,該標頭檔案沒有定義全域性命名空間,必須使用namespace std;這樣才能正確使用cout。

二: 由於namespace的概念,使用c++標準程式庫的任何識別符號時,可以有三種選擇:

1. 直接指定識別符號。例如std::ostream而不是ostream。完整語句如下: std::cout << std::hex << 3.4 << std::endl;

2. 使用using關鍵字。 using std::cout; using std::endl; using std::cin; 以上程式可以寫成 cout << std::hex << 3.4 << endl;

3. 最方便的就是使用using namespace std; 這樣命名空間std內定義的所有識別符號都有效(**)。但這又會帶來了乙個新問題。無數原有的c++**都依賴於使用了多年的偽標準庫中的功能,他們都是在全域性空間下的。所以就有了和等等這樣的標頭檔案,乙個是為了相容以前的c++**,乙個是為了支援新的標準。命名空間std封裝的是標準程式庫的名稱,標準程式庫為了和以前的標頭檔案區別,一般不加".h"。

能夠讓程式訪問命名空間std的方法有很多種,下面是其中的4種:

熟悉c後再來學習c++,我們會發現,插入運算子(<<)看上去就像按位左移運算子(<<),這是乙個運算子過載的例子,通過過載,同乙個運算子將有不同的含義。編譯器通過上下文來確定運算子的含義。c本身也有一些運算子過載的情況。例如,&符號既表示位址運算子,又表示按位and運算子;*既表示乘法,又表示對指標解除引用。

這裡重要的表示運算子的具體功能,而是同乙個符號可以有多種含義,而編譯器可以根據上下文來確定其含義。

物件導向程式設計(oop)的本質是設計並擴充套件自己的資料型別。設計自己的資料型別就是讓那個資料型別與資料匹配。如果正確認識和做到這一點,那麼在以後的開發中,我們對資料的使用會容易的多。在建立自己的型別之前,我們先了解和理解一下c++內建的型別。因為這些型別是自己建立型別的基本條件。

內建的c++型別分為兩組:基本型別和復合型別。

基本型別分為:整數、浮點數。

復合型別包括:陣列、字串、指標和結構。

extern "c"的主要作用就是為了能夠正確實現c++**呼叫其他c語言**。加上extern "c"後,會指示編譯器這部分**按c語言的進行編譯,而不是c++的。由於c++支援函式過載,因此編譯器編譯函式的過程中會將函式的引數型別也加到編譯後的**中,而不僅僅是函式名;而c語言並不支援函式過載,因此編譯c語言**的函式時不會帶上函式的引數型別,一般只包括函式名。

extern "c" 這段宣告在做jni開發的時候會經常用到,主要原因是c++語言在編譯的時候為了解決函式的多型問題,會將函式名和引數聯合起來生成乙個中間的函式名稱,而c語言則不會,因此會造成c++檔案裡面的jni方法在鏈結時找不到對應函式的情況,此時就需要用extern "c"進行鏈結指定,這告訴編譯器,請保持我的名稱,不要給我生成用於鏈結的中間函式名;exter "c"。

Python基礎知識回顧總結

1.encode與decode的使用 2.轉義字元不僅是,還有 eg 表示乙個 if 條件語句 執行語句1 elif 條件語句 執行語句2 else 2 語句迴圈 for in 執行語句 tips1 在python中對格式的要求極為嚴格,同一級的 必須嚴格對齊,否則會報錯 indentationer...

前端基礎回顧總結

1.塊狀元素block level element 塊級元素在瀏覽器顯示時,通常會以新行來開始 和結束 2.內聯元素 行內元素 inline element 和其他元素都在一行上。高度 寬度 行高及頂部和底部邊距不可設定。其寬度為其內容的寬度 萬一需要調整時 display屬性規定元素應該生成的框的...

c 基礎知識回顧

1.資料型別和類。所有程式設計都是處理輸入和輸出。關於輸入引數,從右至左把引數入棧,這樣根據棧基址,可以定位第乙個引數。因為很多函式是引數數量不定的,比如printf.關於輸出,記得輸出時,一般是把值放入eax 暫存器,所以一般資料型別,直接放入返回值資料,暫存器可以裝下,而返回物件,會返回物件的指...