c 基礎 間接修改const的坑

2022-07-11 05:27:26 字數 360 閱讀 6024

在c++中。

通過指標間接修改全域性變數直接在編譯器階段就無法通過,因為全域性變數在常量區中,收到保護。

而修改區域性變數的時候,編譯器可以通過,但是在發生修改的時候,編譯器會開闢一塊新的記憶體,建立乙個新的 *temp賦值給 *p, 而a的值不會發生改動。所有對const常量取位址的操作都是取到了編譯器新開的記憶體,這片記憶體複製了原有空間的資料。

int main() {

const int a = 9;

int* p = (int*)(&a);

*p = 10;

cout << "a=" << a 《在c語言中:

全域性變數與c++一樣無法修改,但是通過間接修改的方式,區域性變數是可以修改成功的。

c 基礎 const 修改

int main const double minvalue 9.6 定義常量double const double ptr minvalue 將minvlaue位址賦予ptr cout ptr 1.常量在程式中任何改變這個值的企圖都將導致編譯錯誤因此它被稱為是唯讀的read only 理論是無法修...

C 中const變數的修改

今天偶然在群裡看到這樣乙個問題 include int main 求輸出結果,只要掌握const變數的一些知識應該會得出答案a 10,p 20,但是這個題還有價值可究,如為什麼在偵錯程式中執行完後 a 20,p 20呢?如圖,為此群裡有個大神找到了這樣一篇文章 簡單介紹一下const變數,const...

c 基礎 引用 const

一些c 對於c語言的加強 1 int fun 在c語言中表示返回值int型的函式,括號裡的引數是任意的 但是在c 中也表示int 型返回值的函式,但是括號裡是沒有引數的相當於int fun void 也就是說在c 中他強調的是型別,所有程式的所有元素都必須指明型別 2 c 中的表示式的返回值是變數本...