我不明白,常量T * &是指針爲const類型T的引用指針低級別的常量,這樣它不會改變的價值指向至。但是,下面的代碼失敗在編譯時並給出了以下消息:不能從int *轉換參數const int的*
error C2664: 'void pointer_swap(const int *&,const int *&)': cannot convert argument 1 from 'int *' to 'const int *&'.
有什麼辦法來修改指針,但防止它指向的指針從函數變化?
void pointer_swap(const int *&pi, const int *&pj)
{
const int *ptemp = pi;
pi = pj;
pj = ptemp;
}
int main()
{
int i = 1, j = 2;
int *pi = &i, *pj = &j;
pointer_swap(pi, pj);
return 0;
}
你有一個'INT *'而且需要'const int的*'作爲輸入。所以把pi和pj改爲'const int *'可以修復錯誤。我不知道爲什麼沒有從非const到const的隱式轉換。 – Hayt
@Hayt - 由於參考。這將允許函數來執行類似'PI = something_that_really_is_const;',那麼這將允許呼叫者修改'something_that_really_is_const'。 –
啊有道理。謝謝:) – Hayt