错误消息“期望的表达式” ..有人知道为什么这么说吗?

时间:2018-09-26 00:54:39

标签: c++ c++11

int InsertByValue(int array[], int & array_size, int value)
{

    int desired_index;
    int InsertByIndex;

  desired_index = BinarySearch(array[],array_size, value, index,0, array_size - 1);

    InsertByIndex(array[], array_size, desired_index, value, desired_index);
};

/* 
it is saying that for desired_index; and InserByIndex; 
No idea why it would be saying that. Anyone know?
*/

2 个答案:

答案 0 :(得分:1)

因此,当C ++告诉您它“期望一个表达式”时,它的意思是您无意中告诉它您打算提供一系列运算符和操作数,或者将由某个运算符操作的对象或数据(例如“ = “或” +”)。

由操作数(数据或对象)和运算符(“ +”,“ =”或“ + =“和” []“)组成的组合构成一个表达式。

现在问题的根源在这里: 当像在InsertByValue函数中一样在C ++中声明一个函数时,必须告诉它传递到该函数中的一项是数组。这就是为什么在第一行的函数定义中放入“ []”的原因。

但是,当您稍后在函数中使用这些数组时,“ []”将充当从该数组中获取对象的运算符。而且当有一个运算符时,就需要有您没有提供的操作数。

简而言之,在您对InsertByIndex和BinarySearch的调用中不需要“ []”。

答案 1 :(得分:0)

第一个问题是其他人提到的内容,即在函数体内的函数调用中不需要[] after数组。

由于int InsertByIndex;是一个函数名,因此出现InsertByIndex的错误。并且函数名称不能再次声明为int变量的名称。由于它是一个函数,因此编译器认为您正在调用它,并且期望标识符后的(..args...)。如果找不到,则会引发错误。