error: invalid types 'int[int]' for array subscript in c++
error: invalid types 'int[int]' for array subscript in c++
我是 C++ 新手。谁能指导我如何在函数中传递数组?
基本上,我试图通过线性搜索找到一个数字并在 C++ 中打印该数字的索引
// linear search
#include <iostream>
using namespace std;
int search(int arr, int n, int x)
{
int i=0;
for (i = 0; i < n; i++){
if (arr[i] == x){
return i;}
}
return -1;
}
// Driver code
int main(void)
{
int size;
int temp;
cout << "Enter Size of Arry";
cin >> size;
int arr[size];
for(int i=0;i<size;i++){
cout << "Enter a " << i << "Element of your arry : ";
cin >> temp;
arr[i]=temp;
}
cout << "Enter the number that you will find index";
int x;
cin >> x;
// Function call
int result = search(arr, size, x);
(result == -1)
? cout << "Element is not present in array"
: cout << "Element is present at index " << result;
return 0;
}
这是错误
Q1.cpp: In function 'int search(int, int, int)':
Q1.cpp:9:12: error: invalid types 'int[int]' for array subscript
if (arr[i] == x){
^
Q1.cpp: In function 'int main()':
Q1.cpp:35:34: error: invalid conversion from 'int*' to 'int' [-fpermissive]
int result = search(arr, size, x);
^
对于像这样的初学者可变长度数组
int arr[size];
不是标准的 C++ 功能。相反,在 C++ 程序中使用标准容器 std::vector<int>
会好得多。
其次函数声明不正确。第一个参数声明为 int 类型。
int search(int arr, int n, int x)
您需要通过以下方式声明函数
int search(int arr[], int n, int x)
或等同于
int search(int *arr, int n, int x)
注意C++中有标准算法std::find
可以在容器中搜索元素。
首先在C++中,数组的大小必须是编译时常量。所以,以下面的代码为例片段:
int n = 10;
int arr[n]; //INCORRECT because n is not a constant expression
上面的正确写法是:
const int n = 10;
int arr[n]; //CORRECT
同样,以下(您在代码示例中所做的)是不正确的:
int size;
int temp;
cout << "Enter Size of Arry";
cin >> size;
int arr[size];//INCORRECT because variable size is not a constant expression
您应该使用 std::vector
来达到您的目的,如下所示:
#include <iostream>
#include <vector>
using namespace std;
//the first argument is a vector<int>
int search(std::vector<int> arr, int x)
{
int i=0;
for (i = 0; i < arr.size(); i++){//use size()member function
if (arr[i] == x){
return i;}
}
return -1;
}
// Driver code
int main(void)
{
int size;
int temp;
cout << "Enter Size of Arry";
cin >> size;
//create a vector instead of an array
std::vector<int> arr(size);
for(int i=0;i<arr.size();i++){//use the size member function
cout << "Enter a " << i << "Element of your arry : ";
cin >> temp;
arr[i]=temp;
}
cout << "Enter the number that you will find index";
int x;
cin >> x;
// Function call
int result = search(arr, x);//no need to pass the size of the vector
(result == -1)
? cout << "Element is not present in array"
: cout << "Element is present at index " << result;
return 0;
}
请注意,您也可以使用 std::find
而不是编写自己的搜索算法。
我是 C++ 新手。谁能指导我如何在函数中传递数组?
基本上,我试图通过线性搜索找到一个数字并在 C++ 中打印该数字的索引
// linear search
#include <iostream>
using namespace std;
int search(int arr, int n, int x)
{
int i=0;
for (i = 0; i < n; i++){
if (arr[i] == x){
return i;}
}
return -1;
}
// Driver code
int main(void)
{
int size;
int temp;
cout << "Enter Size of Arry";
cin >> size;
int arr[size];
for(int i=0;i<size;i++){
cout << "Enter a " << i << "Element of your arry : ";
cin >> temp;
arr[i]=temp;
}
cout << "Enter the number that you will find index";
int x;
cin >> x;
// Function call
int result = search(arr, size, x);
(result == -1)
? cout << "Element is not present in array"
: cout << "Element is present at index " << result;
return 0;
}
这是错误
Q1.cpp: In function 'int search(int, int, int)':
Q1.cpp:9:12: error: invalid types 'int[int]' for array subscript
if (arr[i] == x){
^
Q1.cpp: In function 'int main()':
Q1.cpp:35:34: error: invalid conversion from 'int*' to 'int' [-fpermissive]
int result = search(arr, size, x);
^
对于像这样的初学者可变长度数组
int arr[size];
不是标准的 C++ 功能。相反,在 C++ 程序中使用标准容器 std::vector<int>
会好得多。
其次函数声明不正确。第一个参数声明为 int 类型。
int search(int arr, int n, int x)
您需要通过以下方式声明函数
int search(int arr[], int n, int x)
或等同于
int search(int *arr, int n, int x)
注意C++中有标准算法std::find
可以在容器中搜索元素。
首先在C++中,数组的大小必须是编译时常量。所以,以下面的代码为例片段:
int n = 10;
int arr[n]; //INCORRECT because n is not a constant expression
上面的正确写法是:
const int n = 10;
int arr[n]; //CORRECT
同样,以下(您在代码示例中所做的)是不正确的:
int size;
int temp;
cout << "Enter Size of Arry";
cin >> size;
int arr[size];//INCORRECT because variable size is not a constant expression
您应该使用 std::vector
来达到您的目的,如下所示:
#include <iostream>
#include <vector>
using namespace std;
//the first argument is a vector<int>
int search(std::vector<int> arr, int x)
{
int i=0;
for (i = 0; i < arr.size(); i++){//use size()member function
if (arr[i] == x){
return i;}
}
return -1;
}
// Driver code
int main(void)
{
int size;
int temp;
cout << "Enter Size of Arry";
cin >> size;
//create a vector instead of an array
std::vector<int> arr(size);
for(int i=0;i<arr.size();i++){//use the size member function
cout << "Enter a " << i << "Element of your arry : ";
cin >> temp;
arr[i]=temp;
}
cout << "Enter the number that you will find index";
int x;
cin >> x;
// Function call
int result = search(arr, x);//no need to pass the size of the vector
(result == -1)
? cout << "Element is not present in array"
: cout << "Element is present at index " << result;
return 0;
}
请注意,您也可以使用 std::find
而不是编写自己的搜索算法。