我正在尝试通过指针数组访问数组的元素。首先,我用chars和指针数组声明我的主数组,其中还将包含其他类似数组的名称:
char listSubjects[3][15] = {
"sports", "movies", "fashion"
};
char* listPointers[1] = {
listSubjects[3]
};
现在,我尝试从第一个数组(listNum
这里为零)打印“运动”:
bub1->writeStr(listPointers[listNum][0]);
我收到此错误:
从“字符”到“字符*”的无效转换
陷入困境。我对指针还很陌生,不太了解我在做什么错
在尝试访问元素时,我也尝试使用star。它已编译,但我在屏幕上看不到任何文本。不知道它甚至试图输出什么值,在我的程序中我只看到一个空字符串
bub1->writeStr(*listPointers[listNum][0]);
答案 0 :(得分:1)
这是一个错误
char* listPointers[1] = {
listSubjects[3]
};
因为listSubjects
数组的大小为3,所以listSubjects[3]
是超出范围的数组访问。使用数组的大小尝试引用整个数组是一个常见的初学者错误,我认为这就是您在这里尝试的方法。
如果您想要指向listSubjects
数组中每个项目的指针,则必须单独列出它们
char* listPointers[3] = {
listSubjects[0],
listSubjects[1],
listSubjects[2]
};
然后您的代码就是
bub1->writeStr(listPointers[listNum]);
我认为在这种情况下,您不熟悉这些概念,导致您尝试编写比实际需要复杂的代码。
但是请注意,正如已经说过的,您并不是在这里真正学习C ++。这段代码是纯C语言。在C ++中,我们使用更简单的std::string
和std::vector
来进行此类操作。
答案 1 :(得分:0)
listPointers[][]
生成char
,其中您的函数期望char*
。
您要传递的是listPointers [listNum],没有第二个[]。
上述所有内容,请尽快退出该内容并使用std::string
和std::vector
。