C++對C的增強的幾點

目錄

1. C中可以定義兩個全局變量,C++中會報重定義

int a;

int a = 10;

2. 函數的參數個數檢測,C 語言可以傳多個,但是C++必須和定義嚴格相等

(否則:c++函數參數數量不確定的兩種實現方式, https://blog.csdn.net/yang_aq/article/details/90058200

3.C++要求類型必須強轉一下:

4.結構體中,C語言不允許加函數

5.boo類型大小1字節,非0自動轉換爲1

6.C語言中報錯,三目運算符返回了一個值 20

C++中,返回的變量,可以賦值給100;如下代碼,返回了a<b返回了a,則最後是把a的值賦值爲100

C模仿C++的寫法,如下代碼,將100賦值給b了

7.const 增強,C中局部變量即便聲明瞭const,但是仍可以通過指針繞過改變變量的值,但是c++不可以!

C中:

全局const變量 m_A 不可以修改(全局只讀數據區)

局部const變量 m_B 可以通過指針間接修改(繞過編譯器)

const是僞常量,無法用於數組的初始化和全局變量的初始化,本質就是限定一個變量不能直接賦值。

一直強調const是僞常量,因爲可以間接的去改變它的值。利用指針變量

reference:

https://www.cnblogs.com/loveyouyou616/p/5753232.html

數組大小在編譯期確定,const在運行期才確定大小

https://www.cnblogs.com/cplinux/p/5598160.html

https://www.cnblogs.com/witxjp/p/4964840.html

https://blog.csdn.net/it_is_me_a/article/details/90514373

https://blog.csdn.net/LHK000/article/details/21327635

C++的情況,不一樣:

全局const變量 m_A 不可以修改(全局只讀數據區),和C語言一樣

局部const變量 m_B 不可以通過指針間接修改,真正意義的const

C++中不分配內從,而是存入符號表中

8.C語言中,默認const是外部鏈接

main.c

test.c

C++中,默認const是內部鏈接(當前文件才能訪問的到,出了作用域就不能用了)

所以,如下代碼 extern 聲明出去找,找不到了,無法解析。

test.c

解決方法:

定義時,增加 extern ,提高作用域。再次編譯,則可以找到C++ a 變量了

C++ const分配內存的幾種情況:

C++ const內存分配,只有分配內存了,纔可以使用指針修改它的值(驗證方法)(繞過編譯器)

1. 基礎類型,不分配內存,放在符號表中,無法通過取地址修改(僅能修改臨時地址裏面的值,但是又看不到)

4. 自定義類型,分配了內存,可以通過指針間接修改。(不能直接修改,如註釋掉的代碼:p1.m_Name = “aaa”)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章