c語(yǔ)言變量和常量區(qū)分 為什么不能把常量的地址賦給指針變量?
為什么不能把常量的地址賦給指針變量?在const的右邊是int,這意味著int是一個(gè)常量,不能修改。所以PRR是指向整數(shù)常量的指針。假設(shè)intaprr=&A,如果允許PR=PRR,那么可以通過(guò)PR指針
為什么不能把常量的地址賦給指針變量?
在const的右邊是int,這意味著int是一個(gè)常量,不能修改。所以PRR是指向整數(shù)常量的指針。假設(shè)intaprr=&A,如果允許PR=PRR,那么可以通過(guò)PR指針修改A,例如*PR=10,這違反了PRR的定義。為了防止由于繞過(guò)對(duì)值的修改而導(dǎo)致的錯(cuò)誤,編譯器將提示一個(gè)錯(cuò)誤。如果您只想將PRR本身限制為不可變的,可以在taint*print*constprr=&APR=PRR中寫(xiě)入,并在PRR前面寫(xiě)入const,從而限制PRR本身。換句話(huà)說(shuō),PRR是一個(gè)整數(shù)指針常量。PRR的值不能被修改,除非它被初始化(PRR的點(diǎn)不能被改變),但是PRR地址中的值可以被修改。這樣,PR=PRR,就不會(huì)有沖突,因?yàn)樗鼈兌贾赶蛲活?lèi)型的地址,而PR是一個(gè)公共指針變量,所以可以賦值。