如何将`const char * const`转换为`const char *`

时间:2016-03-14 06:39:58

标签: c++ pointers

我有const char* const我需要传递给期望const char*的方法。我该怎么做?。

此外,还有一个接受const char **的API。在这种情况下如何更改?我试过了

const char * const abc =“something; otherAPIThatExpectsConstCharStarStar(& const_cast(abc))。

但是在linnux上,这种情况失败,'lValue需要'&'运算符”。

3 个答案:

答案 0 :(得分:6)

你不需要。最后一个const标识保存字符串的变量的类型。这意味着您无法修改变量。但是你可以自由地将它分配给其他变量,或者作为一个不再需要保持不变的参数传递。

答案 1 :(得分:0)

你真的不需要,正如你所看到的,当你给一个方法一个参数时,该方法会创建一个参数的副本,所以在方法里面,它只能改变副本,而不是原来的一,除非你传递一个引用地址,所以,现在你有一个指针,它一定不能被改变,没关系,只要把它传递给方法,它就不会改变,就像我说的那样。

    #include<iostream>
    using namespace std;
    void fun(const char *p)
   {
        char tt[10]="dsds";
        p=tt;
        cout<<"inside_fun"<<endl;

    }

    int main()
    {
        int i;
        char here[10]="212121";
        const char * const pp=here;
        fun(pp);
        cout<<pp<<endl;
    }

这是一个糟糕的样式代码,但它显示了这一点,只是传递它,并在方法内部进行更改,没问题。

答案 2 :(得分:-1)

#include <iostream>
#include <string>

std::void setString(const char *p) {
    std::cout << p << std::endl;

}

int main() {
    const char* const cStr ="hello";
    setString(cStr);
}