在函数中 指针的常量引用 形参的问题

我想让函数的形参是指针的常量引用 ,但是会报错

void print1(const int*& a)
{
    cout << typeid(a).name() << endl;
}

int main()
{

    int* a;
    print1(a);

    return 0;
}

image.png
不是很懂这里的const int * &如果不是指针的常量引用的话是什么呢?怎么写才是正确的指针常量引用呢?

阅读 1.8k
2 个回答

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

看你的描述,你需要的是第三个。但是你用了第二个。

void print1(const int* a)

表示函数里面不允许修改 a 所指向的数据。

void print1(int*& a)

表示函数里面既可能修改指针所指向的内容,也可能修改指针本身。

void print1(const int*& a)

你这种写法又表示要修改指针的内容及本身,同时又不允许修改,编译器不明白你到底想做什么。
把 const 去掉就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题