const的變數在特定情況下可以通過指標修改,但是在另一些情況下是不能通過指標修改。
以下是vc6下才測試。
1 不能修改的情況
#include
int const a = 10;
void main(void)
程式編譯通過,但執行時錯誤:
指示a儲存的空間不可以寫,也就是沒有寫許可權,
不能修改其值。估計是儲存在全域性空間,且只有可讀屬性。
2 能修改的情況
#include
void main(void)
(上圖是ubontu下的結果。)
(此為原作者的結果。)
程式能正常執行,且常量被修改了,但是有乙個問題:
為什麼 printf(" a=%d\n", a);
列印a=10?
難道乙個位址空間可以儲存不同的倆個值,當然不能,哈哈,這是因為a是const變數,編譯器對a在預處理的時候就進行了替換。編譯器只對const變數的值讀取一次。所以列印的是10。
a實際儲存的值發生了改變。但是為什麼能改變呢,從其儲存位址可以看出來,其儲存在堆中。
驗證如下:
#include
void main(void)
變數a和b的位址相近。
總結,const全域性變數儲存在全域性儲存空間,其值只有可讀屬性,不能修改;
const區域性變數儲存在堆疊中,可通過指標修改其值;
const變數在預處理時處理,編譯器只對其值讀取一次。
html,css筆試題分享 4
加粗 strong b 上標 sub 下標 sup 居中 center 字型 font 作用 告訴瀏覽器文件使用的是那種文件型別,是html還是xhtml 型別 嚴格版本過濾版本基於框架html版本 iframe的優點和缺點?優點 可以重複呼叫,過載頁面的時候不需要載入整個頁面,只需要載入結構,維護...
2023年BAT程式設計師筆試題面試題分享
找工作的過程中,所有人都必定會面臨一道坎,那就是面試,而面試的好壞決定了你是否能夠得到你想要的工作。不過大部分崗位的面試只只是面試,但是程式設計師這個崗位則往往還要多一道環節,那就是筆試。bat筆試有什麼特點?bat作為目前國內頂尖的網際網路公司,對程式設計師的面試非常苛刻。雖然去面試的時候你不覺得...
介面測試筆試題分享
1 做介面測試當請求引數多時tps下降明顯,此介面根據引數從redis中獲取資料,每個引數與redis互動一次,當一組引數是tps5133,五組引數是tps1169,多次互動影響了處理效能,請詳細闡述如何改進增進效果的方案?tps就是吞吐量,transaction per second。吞吐量下降是...