c++關(guān)于const的問題
const int x=3; int *p=&x; 為什么不可以? 還有const int *p=&x; const 對(duì)*p起作用 則p的值可以變,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改變,是不是說x的值也不可改變;但是我看我的課件上說的是x的值可以改變。。。。求指導(dǎo)
const int x=3; int *p=&x; 為什么不可以? 還有const int *p=&x; const 對(duì)*p起作用 則p的值可以變,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改變,是不是說x的值也不可改變;但是我看我的課件上說的是x的值可以改變。。。。求指導(dǎo)
2016-09-18
舉報(bào)
2016-11-29
const int x=3; int *p=&x; 為什么不可以? ?//const把變量x轉(zhuǎn)變?yōu)槌A?,int*p=&x意思是把指針p指向了X,這個(gè)從程序操作上來說x的值不可以變了,但你可以通過改變p的值來改變了x的值
例如;
const int x=3;
int*p=&x;
p=4; //此時(shí)就違背了const的作用,可以理解為編譯沖突,所以編譯器是不允許這樣編譯的,所以不編譯這程序。
const int *p=&x; const 對(duì)*p起作用 則p的值可以變,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改變,是不是說x的值也不可改變
const int*p=&x; //固定了*p的值,變?yōu)榱顺A浚琲nt*const p這種類型就是把指針p的指向給固定了即只能有一個(gè)地址 例如?const int *p=&x,這樣就不能再&y了
總結(jié)一下就是
const 在*前就是固定*p的值 但可以改變別名和指向別的地址來改變*p
const在*后就是固定指針的指向,即只可以改變所指向的地址的值來變化 *p的值
所以上面的寫法你可以通過改變別名x的值,如x=3來改變p 但不可以直接改變 p=6來改變p的值,卻可以把const int*p添加別的地址,如const int*p=&y ?,通過改變y或者x的值來影響p因?yàn)閤,y仍未為變量
2016-09-19
1、第一個(gè)問題:因?yàn)橛胏onst定義了x的值所以說x的值是不可以改變的,然而后面的*p并沒有用const定義,所以說*p的值是可以改變的,從而若改變*p的值就間接改變了x的值,這就是const定義之后的x變得毫無意義,也會(huì)導(dǎo)致系統(tǒng)出錯(cuò)。(也就是老師說的不能用一個(gè)權(quán)限大的去接受一個(gè)權(quán)限小的)
2、第二個(gè)問題:此時(shí)x是一個(gè)變量,是可以改變的。