You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中cout调用printArray函数报错:invalid conversion from 'int' to 'int*'

解决C++中invalid conversion from 'int' to 'int*'错误

错误原因

你的printArray函数返回类型是void,它的作用是直接向控制台输出数组内容,不能将其作为cout <<链式调用的操作数。当你写cout << printArray(arr, 6)时,编译器会尝试将无返回值的函数调用转换为可参与流输出的类型,这个过程触发了非法的类型转换,导致报错。

解决方案

方案1:拆分输出逻辑(最直接)

把提示语输出和数组打印分开执行,就像你原本注释掉的代码那样:

cout << "The array after swapping values will be " << endl;
printArray(arr, 6);

这样既保留了printArray的原有功能,又避免了类型错误。

方案2:修改printArray返回字符串

如果希望用cout <<链式调用的方式输出,可以让printArray返回一个包含数组内容的字符串,再交给cout输出:

#include <iostream>
#include <string> // 必须包含字符串头文件
using namespace std;

void reverse(int arr[] , int n)
{
    int start =0 ;
    int end= n-1;

    while ( start<=end){
        swap( arr[start] , arr[end] );
        start++ ;
        end-- ;
    }
}

string printArray(int arr[] , int n){
    string output;
    for ( int i=0 ; i<n ; i++ ){
        output += to_string(arr[i]) + " ";
    }
    return output;
}

int main(){
    int arr[6]= { 1 , 2 , 3 , 4 , 5 , 6 };
    reverse(arr, 6);
    cout << "The array after swapping values will be " << printArray(arr, 6) << endl;

    return 0;
}

内容的提问来源于stack exchange,提问作者Vyom Goyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:30:51