带有 *& 参数的函数中的 Const 关键字。

Const keyword in function with an *& argument.

能否请您在以下代码中解释原因:

    #include <iostream>
    void fun(char * const & x){(*x)++;}
    int main(){ 
        char txt[100]="kolokwium";  
        fun(txt);
        std::cout << txt <<"\n";
    }

编译代码需要关键字const?

如果我删除它,我会得到:

 invalid initialization of non-const reference of type ‘char*&’ from an rvalue of type ‘char*’

谢谢!

txtchar[100] 类型。它必须转换为 char * 才能传递给 fun;此转换产生 rvalue。您不能从右值创建非常量引用。

为了说明,请考虑如果 fun 定义如下会发生什么:

void fun(char *&x) { x++; }

下面的代码会做什么(假设它可以编译)?

char txt[100]="kolokwium";
fun(txt);                      // Huh?