一些c++對於c語言的加強
1、int fun()在c語言中表示返回值int型的函式,括號裡的引數是任意的;
但是在c++中也表示int 型返回值的函式,但是括號裡是沒有引數的相當於int fun(void)
也就是說在c++中他強調的是型別,所有程式的所有元素都必須指明型別;
2、c++中的表示式的返回值是變數本身,而不是變數的乙個值,所以可以把返回值當作左值來使用
例如:(a > b? a:b) = 10;
那麼在c語言中怎麼把表示式的返回值當作左值呢?
可以返回變數的位址來實現!因為返回變數位址,就可以對變數的那塊記憶體空間進行操作!
*(a > b? &a: &b) = 10
3、const
在c中 他修飾的是變數的常量值也就是常變數,雖然是修飾的常量值但是還是會給這個變數分配空間;
但是在c++中 就是單純的修飾的乙個常量,所以不會給他分配位址空間,直到遇到&,或者extern的時候才會給這個常量分配位址空間,然後在編譯的過程中如果編譯器發現了這個常量就會直接用符號表中的值來代替這個常量,並不會使用這個分配了位址空間的常量;
也就是說
(1)c語言中const變數是唯讀變數,有自己的儲存空間
(2)c++中的const常量
可能分配儲存空間,也可能不分配儲存空間
當const常量為全域性,並且需要在其它檔案中使用
當使用&操作符取const常量的位址
4、c++的引用,看作是已經定義的變數的別名;
#include
int main()
引用的本質:
c++編譯器在編譯過程中使用常指標作為引用的內部實現,因此引用所占用的空間大小與指標相同
引用在c++中的內部實現是乙個常指標;
轉換的形式 int *const a = &a;
記住乙個形式: 修飾+ & + 變數 =(修飾)變數
常引用:
const int &a = 10;
這裡a 是乙個常引用,它現在代表了10這個常量的位址空間(編譯器分配的空間,在把10 這個值複製到那個空間)的別名
5 內聯函式
inline int max(int a ,int b)
int main()
// 內聯函式代替巨集函式
// 在普通函式前加 關鍵字 inline 將函式變成內聯函式
// inline 必須要和函式定義放一起,如果和函式宣告放一起會被忽略
// define 是預處理器處理的 inline 是編譯器處理的
// define 沒有函式引數檢測,返回檢測,作用域檢測,inline 工作方式像乙個函式
// 所以會有引數型別檢測等
// inline是向請求在呼叫該函式的時候進行函式體的替換,編譯器可能拒絕內聯請求
// 如果內聯成功,編譯完以後**是沒有這一段函式的
// 內聯函式函式體不能過長,最好不要超過 5 行
// 不能有迴圈語句,複雜的 if 語句
// 不能對內聯函式進行取位址操作
6、函式的預設引數
(1)在c++中函式的的引數如果什麼都不寫的話,就預設是無引數的函式
int func() *****>int func(void)
(2)函式的預設引數:當函式呼叫沒有提供該引數的值,會使用預設的值
int mul(int a, int b = 10)
(3)如果給函式乙個引數賦了乙個預設的值,那麼這個引數後面的所有引數都必須要有預設值
int mul2(int a, int b = 5, int c = 6)
7、函式的過載
(1)概念
函式名相同,函式的引數不一樣,根據呼叫的時候傳的引數型別決定呼叫哪乙個函式
(2)函式過載的規則
引數個數不同,引數順序不同,引數型別不同;滿足乙個條件即可
(3)引用做為引數的時候,當常量性不一樣的時候可以過載;
int
func(int &a,int &b) //接收變數
intfunc(const
int &a,const
int &b)//接受常量;
int main()
(4)定義乙個函式指標型別,有乙個void返回值,引數int 型別
typedef void (*func)(int );
intprint(int a)
intprint(int a,int b)
int main()
C 引用 const 引用
通過引用修改它指向變數的值 也就是說 通過修改 b 達到修改 a 的目的,也可以修改a int a 5 int b a b 40 int c b 此時a b c 40 例項1 宣告 double getarea int num 呼叫 double area this getarea 30 1 將30...
C 引用與const引用
1 在實際的程式中,引用主要被用做函式的形式引數 通常將類物件傳遞給乙個函式.引用必須初始化.但是用物件的位址初始化引用是錯誤的,我們可以定義乙個指標引用.1int ival 1092 2 int re ival ok 3int re2 ival 錯誤 4int pi ival 5int pi2 p...
C 基礎 C 中的引用 與const
const int a 10 a唯讀,代表常整型數 intconst b 100 b唯讀,代表常整型數 const int c 20 表示c指向的記憶體空間是常整數型,唯讀,指標c的值可修改 int const d 30 表示指標d為常量唯讀,d指向的記憶體空間可修改 const int const...