错误:类型的无效操作数' const char [3]'和' int *'到二元'运算符*'

时间:2016-02-20 18:47:23

标签: c++ compiler-errors dynamic-allocation

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

$ awk '{print gensub(/(....)\/(..)\/(..)/,"\\3/\\2/\\1",1)}' file
08/04/2012 15:00,207
08/04/2012 16:00,180

$ awk 'match($0,/(....)\/(..)\/(..)(.*)/,a){ print a[3]"/"a[2]"/"a[1] a[4] }' file
08/04/2012 15:00,207
08/04/2012 16:00,180

$ sed -r 's#(....)/(..)/(..)#\3/\2/\1#' file
08/04/2012 15:00,207
08/04/2012 16:00,180

我收到错误(类型' const char [3]'以及' int *'到二进制'运算符*')的操作数无效在线上说: cout<<&#;" Base"<(arrayPtr +(isizeof(* arrayPtr)))<<&#; &#34 ;; 有人能帮助我理解为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

你错过了<<": "之间的*(...),所以编译器试图将": "乘以parens中表达式的值。

//---------------------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))) << " ";