我目前正在嘗試學習一些C++,並遇到以下不直觀的行爲。由於t
是指向const int
的指針,我希望*t
保持不變,只要我們不改變t
即可。爲什麼常量整數指針指向一個非常量整數?
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int a = 3;
const int* t = &a; //Why is this allowed? a is NOT const int
a = 4;
cout << *t << endl; //This does then print 4
//*t = 4; //Throws error.
return 0;
}
任何人都可以解釋爲什麼這是編譯?
爲了澄清我會建議沒有指針的混亂。 'int a = 1; const int b = a;'就好了,現在'b'是const,而'a'不是,即使保持相同的值 – user463035818
@ tobi303是的,但是在你的例子中'b'接收* copy * of 'a'的值。 – flawr
那麼,那麼'int a = 1; const int&b = a;'now'b'是'b'的一個引用,但是即使'a'不是const也不能通過'b'改變這個值 – user463035818