【C++】C++中的const又玩出了新花樣
阿新 • • 發佈:2018-12-14
“當然,這種修改常量的變態程式碼在實際開發中基本不會出現,本例只是為了說明C和C++對 const 的處理方式的差異。”讀到這兒莫名一樂,哈哈!
在C++中,printf("%d\n", n);
語句在編譯時就將 n 的值替換成了 10,效果和printf("%d\n", 10);
一樣,不管 n 所在的記憶體如何變化,都不會影響輸出結果。
驗證程式如下:
#include "stdlib.h" #include "stdio.h" #include "string.h" #include <string> #include "io.h" #include <iostream> #include "time.h" int main() { const int n = 10; int *p = (int*)&n; //必須強制型別轉換 *p = 99; //修改const變數的值 printf("%d\n", n); printf("%d\n", *(&n)); printf("%d\n", *p); system("pause"); return 0; }
13行和14行都指向了同一個記憶體地址,但13行返回值是10,14行返回值是99