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
相关产品推荐
相关产品推荐

