c++ - 错误 : invalid operands of types 'const char [3]' and 'int*' to binary 'operator*'

标签 c++ compiler-errors dynamic-allocation

所以在我的程序中,我应该让用户输入一个基数,最多 32 个基数,以及一个要转换的随机十进制值。因此,如果用户输入 5 和 10,则必须以 5、4、3 和 2 为基数在屏幕上打印 10。但是,这是我第一次使用动态分配,所以我遇到了奇怪的错误,这是一个我无法修复的。 (d代表十进制值,b代表基数,arrayPtr是我的动态分配数组)

        while(d != 0 && d>b)
    {
        *arrayPtr = digits[(d%b)];
        d = d/b;
        arrayPtr++;
        n++;
    }

    //print statement to read array backwards to give correct output
    for (int i=n-1; i>=0; i--)
    {
        cout<<"Base "<<i <<": "*(arrayPtr+(i*sizeof(*arrayPtr)))<<" ";    }
    b--;
    cout<<endl;

我收到一个错误(类型为“const char [3]”和“int*”的无效操作数到二进制“operator*”): cout<<"基础"<(arrayPtr+(isizeof(*arrayPtr)))<<""; 谁能帮我理解为什么会这样?

最佳答案

您缺少一个 <<": " 之间和 *(...)所以你试图乘以编译器的东西": "通过括号中表达式的值。

//---------------------v
cout<<"Base "<<i <<": "*(arrayPtr+(i*sizeof(*arrayPtr)))<<" ";

应该阅读

cout<<"Base "<<i <<": "<<*(arrayPtr+(i*sizeof(*arrayPtr)))<<" ";
//---------------------^^

这就是为什么人们倾向于在运算符之间放置空格,以便更容易发现这样的错误。

cout<<"Base "<<i<<": "*(arrayPtr+(i*sizeof(*arrayPtr)))<<" ";
//vs
cout << "Base " << i << ": " << *(arrayPtr + (i * sizeof(*arrayPtr))) << " ";

关于c++ - 错误 : invalid operands of types 'const char [3]' and 'int*' to binary 'operator*' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527515/

相关文章:

c++ - MSVC - 可执行文件构建正确但 DLL 不正确,缺少符号和冲突的依赖项 - SSCCE/Repro

haskell - Haskell中的实际类型与预期类型错误

c - 双指针取消引用的段错误

linux - 在 CentOS 6.5 上构建 Dart 的错误

c++ - 如果我不释放/删除动态分配的数组会发生什么?

arrays - Ada 中的字符串数组

c++ - 找不到我的错误!错误 : expected identifier before '(' token

c++ - 尝试构建 UETorch 时 Xcode 8.1 中的链接器错误

c++ - 如何测试stringstream运算符>>是否已解析错误类型并跳过它

android - 未处理的异常:System.NullReferenceException: <Timeout exceeded getting exception details> occurred