我试图传递指向指针的引用,主要有两种情况:
1. `const int* &ref_var` - `ref_var` 是一个指向常量整数的指针的引用。 2. `int *const &ref_var` - `ref_var` 是一个指向整数的常量指针的引用。
现在第二种情况可以正常工作,因为我不能修改指针本身,但在第一种情况下,我收到了一个错误消息,我认为不应该出现这个错误,因为一个非常量指针变量可以作为参数传递给具有常量指针参数的函数。
代码如下:
1. `const int* &ref_var` - `ref_var` 是一个指向常量整数的指针的引用。 2. `int *const &ref_var` - `ref_var` 是一个指向整数的常量指针的引用。
现在第二种情况可以正常工作,因为我不能修改指针本身,但在第一种情况下,我收到了一个错误消息,我认为不应该出现这个错误,因为一个非常量指针变量可以作为参数传递给具有常量指针参数的函数。
代码如下:
#include<iostream>
using std::cout;
using std::endl;
void fun(const int* &ref_var) //error: invalid initialization of reference of type const int*& from expression of type int*
{
//BLANK
}
int main()
{
int x=9;
int *p=&x; //ERROR VANISHES IF P IS DECLARED AS POINTER TO CONSTANT INT
fun(p);
return 0;
}
如果函数 fun
的声明如下:
void fun(const int *ptr)
{
//BLANK
}
尽管传递的参数是一个非const指向整数的指针,它仍然可以正常工作。
请问您能告诉我哪里出了问题吗?