Okay, I'm working on learning C and working with some memory locations.
Assume the sizeof(double) is 8
and we have a double dbl_array[5] with a memory location of 0x7fffffffe360.
What would the memory location be for &(dbl_array[4])?
When running locally I can see that the location goes from b34b0 to b34d0, but I'm stuck on how to apply this to the assumed location.
Any tips would be amazing!
CodePudding user response:
Calculate the address in bytes as base 4*sizeof(double). So 0x7fffffffe360 4*8.
CodePudding user response:
What would the memory location be for
&(dbl_array[4])?
Without knowing the type of computer and/or operating system running this program, this question cannot be answered; it is only possible to say which address this element would have on 99% of all computers:
If X is an array of the data type Y and the address of the element X[n] is Z, the address of the element X[n 1] is Z sizeof(Y).
For this reason, the address of the element X[n M] is Z M*sizeof(Y).
The address of an array is the address of element X[0].
Now simply take a calculator that can calculate hexadecimal numbers and perform the following calculation: 0x7fffffffe360 4 * 8
However, there are counterexamples where the address calculation is done differently: The "huge" memory layout on x86-16 for example...
