目錄
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”)