c++ - invalid initialization of non-const reference of type 'const char*&' from an rvalue of type 'const char *' -
i made mystrcpy function,
void mystrcpy(char *&stuff, const char *&otherstuff){ for(int i=0; stuff[i]&&other[i]; i++){ stuff[i]=other[i]; } }
and main function:
int main(){ char *hello="hello"; mystrcpy(hello, "bye bye"/*<--i have no clue data type is!!*/); printf("%s\n", hello); return 0; }
it not compile, , says "invalid initialization of non-const reference of type 'const char*&' rvalue of type 'const char *'"...
when do:
const char *bye="bye bye"; mystrcpy(hello, bye);
it compiles without error.
i need know why former 1 doesnt work, thanks.
your function takes a reference pointer, bit unusual. notably, means input must pointer has own storage (so can take reference pointer).
const char *bye="bye bye"; mystrcpy(hello, bye);
works because bye
pointer variable, can take reference it.
mystrcpy(hello, "bye bye")
fails because "bye bye"
not pointer - it's array of characters (a const char [8]
) , there's no pointer take reference to.
you not need reference &
in mystrcpy
function signature - makes function harder use, , can introduce interesting bugs if accidentally adjust pointers in function (e.g. if started doing *stuff++ = *other++;
).
Comments
Post a Comment