函数参数,const char**,Temp Variable

Qua*_*fan 1 c++

我想将一个参数传递给一个函数,它接受一个const char**

#include<iostream>

using namespace std;

void testFunc(const char **test){}

string testString = "This is a test string";

int main()
{
    const char *tempC = testString.c_str();

    testFunc(&tempC);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,但我不想通过临时变量tempC.我想直接传递testString.c_str().如下,

int main()
{    
    testFunc(&testString.c_str());

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,它显示错误,

 error C2102: '&' requires l-value
Run Code Online (Sandbox Code Playgroud)

是否可以在不使用temp变量的情况下完成.

Nic*_*las 6

我想直接传递testString.c_str().

你不能.std :: string :: c_str()返回一个const char *.为了创建指向字符串的指针,您必须将其放在变量中并获取其地址.

话虽这么说,我更关心的是你试图通过这个功能.一般来说,这样做的函数有const char **两个原因:

1:它需要一个字符串数组.您传递的是一个字符串.通常,采用数组的C风格函数需要第二个参数来说明数组中有多少个元素.我希望你在那里放一个.

2:它返回一个字符串.在这种情况下,你所做的事情根本没有帮助.您应该创建一个const char *变量,将其初始化为NULL,然后将指针作为参数传递给它.它的值将由函数填充.