我试图为char**
变量分配值。在我的foo.h
中,我定义了一些变量,例如
#define APIOCTET int
#define APILONG long
#define APICHAR char
#define APISTRING char*
现在我的foo.cpp
我尝试使用
APILONG apiInitialize(APISTRING filePath, APISTRING* outputString)
{
//open text file to where output will be printed
//do other stuff, etc..
//return result;
}
我想为我的APISTRING* outputString
分配一个值,但我无法弄清楚如何这样做,我尝试了许多基本上是变体的东西。以下代码
APISTRING error = "error";
APISTRING other = "string";
APISTRING charArr[] = { error, other, error };
APISTRING *charArr2[] = { charArr };
errorString = *charArr2;
我还不是100%明确APISTRING* outputString
到底是什么。当我尝试编译时,它给出了一条错误消息,其中提到它是char**
。它是一个2D数组吗?指向字符数组的指针?..但最重要的是,我如何为这个变量赋值?提前谢谢。
答案 0 :(得分:1)
APISTRING *是指向char的指针。它包含一个地址,用于保存内存中字符串第一个字符的地址。
有关C / C ++中双指针的更多信息,请参阅此question。
要分配到您需要执行的字符串*outputString = "string"
答案 1 :(得分:0)
APISTRING * outputString将在编译时被预处理并重新列为char ** outputstring。因此,outputString将是双指针因此,您需要这样做(在代码下面)。为简单起见,我将.h和cpp结合在一起。
#include<iostream>
using namespace std;
#define APIOCTET int
#define APILONG long
#define APICHAR char
#define APISTRING char*
APILONG apiInitialize(APISTRING filePath, APISTRING* outputString)
{
APISTRING getIt = *outputString;
cout<<" "<<getIt<<endl;
}
int main()
{
APISTRING str = "hello";
APISTRING* outputString = &str;
APILONG val = apiInitialize("world", outputString );
system("PAUSE");
return 0;
}
我建议使用std :: string,用某些行为很容易调整。希望这会有所帮助。