比如 const int xyz[2] = {1,0}; xyz[0] ++肯定不行,我想問的是,如果是記憶體越界,正好把這里踩了呢?這個地方值會變嗎? 是會拋出錯誤還是值被修改,沒有提示?
uj5u.com熱心網友回復:
修改啊,const 只是編譯器級的不可修改,實際記憶體讀寫權限是系統相關的uj5u.com熱心網友回復:
給你段代碼,跑一下就知道了int main() {
const int a[] = {1, 2};
int *p = (int*)a;
//a[0]=2;
*p = 2;
printf("%d\n", a[0]);
return 0;
}
uj5u.com熱心網友回復:
會修改,不是給予提示。因為const修飾的是xyz陣列,不能通過xyz陣列去修改,但是其他的變數(指標)是可以修改的,不受限制。const修飾的并不是只讀的記憶體。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/208772.html
標籤:C語言
上一篇:二進制檔案轉十進制檔案
下一篇:尋找漂亮的字串。。。求大神指點
