1樓:匿名使用者
const 只對它申明的變數負責,且只是在編譯時檢查,當你把它強制型別轉換了就能修改它
你這個編譯器有點老,新的編譯器在 int *b = &a; 就出錯了,原因是這裡有個從const int *到int *的隱式轉型。
另,c語言的指標很靈活,但使用它需要特別注意安全,像這樣的做法也能直接把a改了:
const int a=3;
*(int *)a = 5;
2樓:
a是const型別,所以對於編譯器來說,會檢查後面不能對a再次直接賦值,但並不是說a存放在一個一定不能修改的記憶體區,而用b去指向a的地址,給*b賦值並不違反規則,因為b的型別是int指標,而不是const int *,在c語言標準裡面並沒有規定這種情況不能賦值。
不過看到其他童鞋們的回答,嗯,c語言標準一直在變,編譯器也各種各樣,所以也許說的不對,呵呵。
3樓:匿名使用者
你用的什麼編譯器啊,visual c++肯定是編譯不過去的
4樓:小黑工兵
其實這個程式是編譯不過去的 先定義的const 的 int a;然後用一個非const的b去取a的地址,編譯器就會報錯「cannot convert from 'const int *' to 'int *'」不能將一個const型指標付給非const型
c語言指標陣列如何存放函式地址C語言指標陣列如何存放函式地址
c c 的指標的靈活,常把許多初學者搞暈,連高手也是如此。1.當然,可以呀,一切資料都可返回 2.複合指標型別直接表示非常麻煩 連高手都是這樣 可以分解成多個簡單型別 typedef void funtype void funtype num 100 分解後簡單多了!3.因為函式名不是字串,初始化時...
C語言檔案指標,C語言中通過檔案指標訪問檔案有什麼好處?
你還沒解決嗎?你的bug應該不是檔案方式的問題。我才起來給你除錯,應該是 這一句的問題 fp1是檔案指標,fopen s函式返回的值型別是errno t 也就是int型別的值,因fp1錯誤的使用,而接受了fopen s函式的返回值,此時fp1指標的值變成0x0000000d fopen s函式的返回...
c語言為什麼會有指標?c語言為什麼要有指標呢?
指標是c中的精髓,如果沒有,應該說就是一種很平庸的語言,從本質上說,指標體現了von neumann體系結構計算機也就是當今計算機的特徵,記憶體資料按照當前的解釋決定其意義,其指標的運算更是以機器實現的方式展現出來。具體的主要原因大致如下 1 函式的引數傳遞 c語言只有傳值這樣一種方式,在函式體內不...