I am new to C++ language and I have no idea of pointers and their usage. I\'m facing the error \"[Error] invalid conversion from \'int\' to \'int*\' [-fpermissive]\"
You need to pass a pointer to the first element of array. Change midd (ax [10], asize ) to midd (ax, asize ).
In function signature
double midd(int arr[10],int size);
parameter int arr[10] is equivalent to int *arr
double midd(int *arr,int size);
Therefore, midd expects its first argument of the type int *. In function call midd (ax, asize ), ax will decay to int *.
Here midd(int arr[10],int size); is expecting int* and you are trying to pass int value ( ax[10] which is also ERROR : ax has only 10 elements and you try to use 11th ), and compiler can not convert int to int* so it shows "[Error] invalid conversion from 'int' to 'int*' [-fpermissive]".
To make this program correct you have to make this change.
Replace cout<< midd (ax[10], asize ); with cout<< midd (ax, asize );
-now pointer of ax (int*) is passed so midd() will accept it.
Change the function call
cout << midd(ax, asize) << endl;
and declaration
double midd(int arr[], int size) { ... }
or go the C++ way: std::vector or std::array. For example
#include <iostream>
#include <array>
using namespace std;
double midd(array<int, 10> a) {
int mid = a.size() / 2;
return (a[mid] + a[mid + 1]) / 2.0;
}
int main() {
array<int, 10> ax = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
cout << midd(ax) << endl;
}