错误 [错误] 无法在分配中将'char**'转换为'char*'
error [Error] cannot convert 'char**' to 'char*' in assignment
#include <iostream>
using namespace std;
const int MAX = 4;
int main ()
{
char *names[MAX] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
char *ptr[MAX];
for (int i = 0; i < MAX; i++)
{
ptr[i] = &names[i];
}
for (int i = 0; i < MAX; i++)
{
cout << "Value of names[" << i << "] = ";
cout << *ptr[i] << endl;
}
return 0;
}
您需要更改:
ptr[i] = &names[i]; // `&names[i];`is pointer to char*
to
ptr[i] = names[i];
另一件事是您应该将文字存储为const char*
而不是char*
,因此也更改:
char *ptr[MAX];
char *names[MAX] = {
to:
const char *ptr[MAX];
const char *names[MAX] = {
您可以在编译器错误/警告中阅读,因此我建议您学习如何阅读它们,在这种情况下:
prog.cc:23:13: error: assigning to 'char *' from incompatible type 'char **'; remove &
ptr[i] = &names[i];
^ ~~~~~~~~~
编译器将为您提供分配的位置的准确信息,还为您提供确切的信息:remove &
。该输出来自Clang,我认为这是最佳错误消息之一。
Marcin所说的
ptr[i] = names[i];
这是因为名称[i]实际上是指指针。最后是为了打印
cout << ptr[i] << endl;
因为ptr [i]也是指针
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- strncpy之后的char数组的错误行为
- C++错误:初始值设定项过多,无法'char[26]'
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 使用 char* 存储数据和产生的错误
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- C++错误:无法将参数 2 从 'char' 隐蔽到 char[]'
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 使用外部变量会导致"unsigned char"错误LNK2001
- 如何修复C++中的'cannot convert char to char*'错误?
- 转换LPVOID IN CHAR错误C2440:=
- 将字符串传递给函数时出现"conversion to const char*"错误
- 创建新文件时std::string to const char*错误
- Fopen在c++中获取char *错误
- c++将整数复制到char[]或unsigned char[]错误
- 从"const char*"到"char"错误的无效转换
- 不推荐从字符串常量转换为char*错误
- 将所有nsdata字节复制到char*错误中
- 初始化"int strcmpi(const char*, const char*)"错误的参数 1