我想让函数的形参是指针的常量引用 ,但是会报错
void print1(const int*& a)
{
cout << typeid(a).name() << endl;
}
int main()
{
int* a;
print1(a);
return 0;
}
不是很懂这里的const int * &
如果不是指针的常量引用的话是什么呢?怎么写才是正确的指针常量引用呢?
我想让函数的形参是指针的常量引用 ,但是会报错
void print1(const int*& a)
{
cout << typeid(a).name() << endl;
}
int main()
{
int* a;
print1(a);
return 0;
}
不是很懂这里的const int * &
如果不是指针的常量引用的话是什么呢?怎么写才是正确的指针常量引用呢?
void print1(const int* a)
表示函数里面不允许修改 a 所指向的数据。
void print1(int*& a)
表示函数里面既可能修改指针所指向的内容,也可能修改指针本身。
void print1(const int*& a)
你这种写法又表示要修改指针的内容及本身,同时又不允许修改,编译器不明白你到底想做什么。
把 const 去掉就可以了。
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
int *
是指向int
的指针,指针不是常量const int *
是指向const int
的指针,指针不是常量int * const
是指向int
的指针,指针本身是常量const int * const
是指向const int
的指针,指针本身也是常量。*p = 1
是否合法p = q
是否合法int *p;
const int *p
int *p const
const int *p const
看你的描述,你需要的是第三个。但是你用了第二个。