C語言中修改const int 定義的常量()

2021-08-21 18:50:31 字數 563 閱讀 1701

真正讓我懂了的解釋:

volatile 指出 i是隨時可能發生變化的,每次使用它的時候必須從i的位址中讀取,因而編譯器生成的彙編**會重新從i的位址讀取資料放在b中。而優化做法是,由於編譯器發現兩次從i讀資料的**之間的**沒有對i進行過操作,它會自動把上次讀的資料放在b中。而不是重新從i裡面讀。這樣一來,如果i是乙個暫存器變數或者表示乙個埠資料就容易出錯,所以說volatile可以保證對特殊位址的穩定訪問。

本來想測試第一次**就寫錯

const int a=1;

int *b = &a;

這樣寫會報錯,因為a是常量所以不會讓你去到位址應該用(int *)強制取其位址

//這次雖然定義對了,但是會發現a和*c的值卻不一樣是因為進行了優化直接重上次取得值取得(從上邊的解釋中可以懂的)

#includeint main(void)

這次算是對了

//這次的結果都一樣了

#includevoid b(int *a)

int main()

C語言中輸入輸出重定,freopen 妙用

使用的理由 範圍 如果輸入資料很龐大,需要一次又一次的重新輸入和除錯時可採用本函式。freopen 函式 1.格式 file freopen const char filename const char mode file stream 2.引數說明 filename 要開啟的檔名 mode 檔案開...

C語言中輸入輸出重定,freopen 妙用

使用的理由 範圍 如果輸入資料很龐大,需要一次又一次的重新輸入和除錯時可採用本函式。freopen 函式 1.格式 file freopen const char filename const char mode file stream 2.引數說明 filename 要開啟的檔名 mode 檔案開...

C語言求定積分

一.寫乙個用矩形法求定積分的函式,求 sin x 在 0,1 上的定積分。include include float jifen float a,float b int i,l float n 0.001,s 0 n表示劃分的單位寬度,n越小結果越精確,n是矩形的寬 l b a n l表示有多少個單...