分享 程式筆試題 const變數通過指標修改問題

2021-09-06 09:21:54 字數 828 閱讀 8015

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。吞吐量下降是...