我刚刚开始编码,现在正在学习数组。我正在尝试编写一个包含数组列表的程序,并告诉我第一个或最后一个数字是否为2.为此,我使用了一个函数。
我的代码如下:
#include <iostream>
using namespace std;
const int size = 6;
bool firstlast(int array[size]);
int main()
{
int array[size];
for (int index = 0; index < size; index++)
{
cout << "Enter value for array[" << index << "]\n";
cin >> array[index];
}
bool check = firstlast(array[size]);
if (check)
cout << "The array either starts or ends in 2!\n";
else
cout << "The array does not start or end with 2.\n";
return 0;
}
bool firstlast(int array[size])
{
if (array[0] == 2)
return true;
if (array[size - 1] == 2)
return true;
return false;
}
我做错了什么? 编译器给出了错误:
candidate function not viable: no known conversion from 'int' to 'int *' for 1st argument; take the address of the argument with and
答案 0 :(得分:1)
编译器正在识别您的函数。
问题在于代码调用函数的方式
bool check = firstlast(array[size]);
试图将array[size]
(array
的一个不存在的元素)传递给期望指针的函数。
这个电话大概应该是
bool check = firstlast(array);
因为数组在传递给函数时被隐式转换为指针。
答案 1 :(得分:0)
此代码
bool check = firstlast(array[size], size);
尝试传递数组的size
元素而不是数组本身。在C ++中,数组通过指针传递,即使您使用数组语法编写函数参数。
为避免让自己感到困惑,请将firstlast
更改为
bool firstlast`(int* array, int size)`
并用
调用它bool check = firstlast(array, size);