我有const char* const
我需要传递给期望const char*
的方法。我该怎么做?。
此外,还有一个接受const char **的API。在这种情况下如何更改?我试过了
const char * const abc =“something; otherAPIThatExpectsConstCharStarStar(& const_cast(abc))。
但是在linnux上,这种情况失败,'lValue需要'&'运算符”。
答案 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);
}