我不明白,常量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