指向字符阵列数组的指针
Pointer to array of character arrays
好吧,这让我很难过。我试图将一系列角色阵列传递到我班级的构造函数中。该类具有一个私人属性,该属性存储了指向字符数组数组的指针。然后可以通过指针处理数组。
下面是一些证明所需功能的代码。但是,它不会编译。我如何修复此代码以使其可行?
using namespace std;
const int MAX_LINES = 10, MAX_STRING = 80;
class Alphabetizer{
public:
Alphabetizer(char * inArray[][MAX_STRING]) : input(inArray){};
private:
char * input[MAX_LINES][MAX_STRING];
};
int main(){
char charArray[MAX_LINES][MAX_STRING];
Alphabetizer theAlaphBet(charArray);
return 0;
}
如果您坚持使用C兼容的字符指针,我认为您将使用char **
作为input
的类型,幸运的是。这是执行此操作的常用方法(至少在C中),并且具有不强迫您定义最大字符串大小的额外好处。
正如其他人指出的那样,您可以使用std::string
,这可能是更好的选择。
我猜是您不是将指针传递给char[][]
,而是通过char[][]
。
另外,您应该使用std::string
代替char数组。
std::string
将是最合适的!它可以很好地处理字符串和字符阵列!
代码中几乎没有错误。我想您正在尝试从字母表内部的主函数中引用chararray。如果是这样,声明
char * input[MAX_LINES][MAX_STRING];
是错误的,因为上述声明使输入成为((char*)的max_string数组)的max_line数组。总而言之,输入是一个数组,而不是通往任何内容数组的指针。如果您打算将其作为指针 - 其余代码暗示我 - 那么您必须执行以下操作,
const int MAX_LINES = 10, MAX_STRING = 80;
class Alphabetizer{
public:
Alphabetizer(char ((*ar)[MAX_LINES])[MAX_STRING]) : m_ar(ar){};
private:
char ((*m_ar)[10])[80];
};
int main(){
char charArray[MAX_LINES][MAX_STRING];
char ((*ar)[MAX_LINES])[MAX_STRING] = &charArray;
Alphabetizer theAlaphBet(&charArray);
return 0;
}
此外,
input(inArray)
是错误的,因为这等同于执行以下操作,
char a[1] = {'a'};
char b[1] = {'p'};
a = b;
将一个数组分配给另一个数组不会复制一个。您必须做明确的memcpy。(该语义在C或C 中没有意义)
很难不看到编译错误,但我认为问题可能是这一行:
Alphabetizer theAlaphBet(charArray);
您直接传递了数组而不是地址。它应该阅读:
Alphabetizer theAlaphBet( &charArray );
但是,我认为您可能会过度复杂的事情。您可能会使用参考而不是指针:
更好。const int MAX_LINES = 10, MAX_STRING = 80;
class Alphabetizer{
public:
Alphabetizer(char & inArray[][MAX_STRING]) : input(inArray){};
private:
char & input[MAX_LINES][MAX_STRING];
};
int main(){
char charArray[MAX_LINES][MAX_STRING];
Alphabetizer theAlaphBet(charArray);
return 0;
}
您可能还想考虑使用std :: String,因为这可能有助于简化您的代码。
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空