怎么會有危險呢?int x=3;const int *y=&x; x值是可以改變的,定義的y是一個指向x指針變量,那么y始終是指向x的,沒有危險,使*y不可以被重新賦值,即不允許通過*y改變x的值,也不存在危險。
比較const int x=3;int *y=&x;和int x=3;const int *y=&x;第一種情況不允許。而第二種可以。因為常量相當于只讀權(quán)限,不可被重寫,那么用小權(quán)限指向大權(quán)限沒有問題,反過來就不允許,會報錯。
我認為,y是依附于x的,所以說,*y被改變是沒有問題的。不知道有沒有幫助到你。
2017-03-30
int *const y = &x;是將指針y定義為常量,不能改變,即y=&z將會報錯。
const int *y = &x;是將*y定義為常量,即*y=20(int x=3)將會報錯。
而x沒有被定義為常量,則x的值可以改變,所以兩次結(jié)果一樣
2017-03-30
int a; ?int const *p=&a; 這時候改變a的值,*p是不會改變的,你只要記住 int const看成一個整體。他修飾的是*p,那*p一定不會變