Sono nuovo ai puntatori e alle nozioni di base di apprendimento dei puntatori. Voglio sapere la differenza tra * ptr e * (& ptr + 1) dal codice seguente.Differenza tra * ptr e * (& ptr + 1)
#include<stdio.h>
int main()
{
int a[3] = {1, 2, 3};
int *ptr = a;
printf("*ptr = %d\n",*ptr);
printf("&ptr = %p\n",&ptr);
printf("(&ptr + 1) = %p\n",(&ptr + 1));
printf("*(&ptr + 1) = %d\n",*(&ptr + 1));
return 0;
}
Dalla mia analisi gcc produce il seguente output,
*ptr = 1 // as ptr = a, Ultimately *ptr will print the first value of array i.e. 1
&ptr = 0x7fffa7e97788 // Starting Address of array or address of first element
(&ptr + 1) = 0x7fffa7e97790 //address of next element in the array
*(&ptr + 1) = 1 // I want to know how this is getting dereffered
Grazie in anticipo.
Che dimensione è 'int', nel proprio ambiente? –
La dimensione di int è 4 byte – arahan567
[questo] (http://stackoverflow.com/a/24468853/2455888) può aiutare a capire questo graficamente. – haccks