I got a compiler error:
main.cpp|59|error: invalid conversion from \'int\' to \'int*\' [-fpermissive]|
The offending line is
Your error is in this line:
int *pComienzo = vector, *pFinal = vector[nElementos-1];
The reason for this is that vector
is an int*
, but vector[nElementos - 1]
is a regular int
. Thus the declaration
int *pFinal = vector[nElementos - 1];
is trying to assign the integer value at the last index of vector
to the pointer pFinal
, hence the compiler error.
To fix this, you may want to do either
int *pFinal = &vector[nElementos - 1];
which makes pFinal
point to the last element of vector
, or
int *pFinal = vector + (nElementos - 1);
which accomplishes the same thing using pointer arithmetic.
That said, since you're working in C++, why not use the provided std::vector
type and avoid working with pointers altogether?
Hope this helps!
vector
is a pointer, but subscripting it as vector[nElementos-1]
dereferences it to simply an int. What it looks like you want is instead
int *pComienzo = vector, *pFinal = &(vector[nElementos-1]);
An array access/subscript (i.e., a[i]
where a
is an array/pointer and i
is an integer) is an expression with the type being the thing you have in the array.
Simply use the address-of operator &
to store the address in the pointer:
int *pComienzo = vector, *pFinal = &vector[nElementos-1];
You forgot &
. vector[nElementos-1]
is the value, while you need an address for pFinal
.
Either *pFinal = &(vector[nElementos-1])
or *pFinal = vector + nElementos-1
.