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