c++ - what is inside skipped memory address? -


we know integer variable take 4 (byte) memory address. wonder, if initialize integer variables , make pointer it. can value of pointer (which have address of variable: 0x22fef8 in computer). how memory address after 0x22fef8 0x22fef9, 0x22fefa, 0x22fefb? in there? value of variable if dereference address? how access them?

thank you.

you're right: in 32-bit computer integer takes 4 bytes. in c, can expressed following code:

int = 0x12345678; int *p_i = &i;` 

if p_i gets value 0x22fef8, p_i++ become 0x22fefc since point next integer. if want see what's in bytes make i, need use different pointer:

typedef uint_8 byte; byte *p_b = (byte *)&i;` 

that means change pointer-to-int &i represents , typecast pointer-to-byte. still have value 0x22fef8 since that's first byte of i - if p_b++ change 0x22fef9. , note if print out original value of *p_b (that is, byte pointing to), not give same value i. depending on computer, print out either first byte or last byte: 0x12 or 0x78, or @ least decimal versions thereof.

this due "endianness" of computer, affects storage of multi-byte values. little-endian computers x86 store littlest part of value first - 0x78 - while power pc computers store biggest part of value first - 0x12.


Comments

Popular posts from this blog

wordpress - (T_ENDFOREACH) php error -

Export Excel workseet into txt file using vba - (text and numbers with formulas) -

Using django-mptt to get only the categories that have items -