Compiler error: invalid conversion from 'int' to 'int*' [-fpermissive]|

前端 未结 4 1447
萌比男神i
萌比男神i 2021-01-15 02:20

I got a compiler error:

main.cpp|59|error: invalid conversion from \'int\' to \'int*\' [-fpermissive]|

The offending line is

相关标签:
4条回答
  • 2021-01-15 02:45

    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!

    0 讨论(0)
  • 2021-01-15 02:46

    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]);
    
    0 讨论(0)
  • 2021-01-15 03:02

    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];
    
    0 讨论(0)
  • 2021-01-15 03:06

    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.

    0 讨论(0)
提交回复
热议问题