change pointer of char[] in c++ -
i had write program declares char text[16]; , int number; , fills input user. have call function (without passing anything) , recall data stack , display it. able find both of them
// function called without passing variables int number; char text[16]; cout << *(&text + 5) << endl; // outputs correct text can not figure out how assign text number = *(int*)(&number + 20); // works , outputs correct number , saves correctly int number; cout << "\tnumber: " << number << endl; cout << "\ttext: " << text << endl; i know if there way transfer text *(&text + 5) char text[16];
what doing going result in undefined behavior. depending heavily on compiler , therefore in turn on architecture. proof being when compile , run code different optimization flags different results. check out https://en.wikipedia.org/wiki/buffer_overflow
the first expression *(&text + 5) evaluates taking address of text pointer in memory, adding 5 , dereferencing character value stored @ location. can pretty on stack @ time.
&number + 20 go off "visible" stack, pointer arithmetic , result in adding 20*sizeof(int) pointer memory address of number on stack.
if intending should use strcpy suggested @jafferwilson
Comments
Post a Comment