#include <stdio.h>
int main()
{int x1,x2;
double y1,y2;
int *px1, *px2;
double *py1,*py2;
x1 = 10;
x2 = 333;
y1 = 9.99;
y2 = 999.999;
px1 = &x1;
py1 = &y1;
px2 = px1 - 1;
py2 = py1 - 1;
printf("\n zmienna x1 = %10d, adres = %8u",*px1,&x1);
printf("\n zmienna x2 = %10d, adres = %8u",*px2,&x2);
printf("\nzmienna y1 = %10.4f,adres = %8u",*py1,&y1);
printf("\nzmienna y2 = %10.4f,adres = %8u",*py2,&y2);
return 0;
}
Uczę się programowania w C i nie rozumiem dlaczego, gdy od adresu zmiennej x1 odejmiemy 1 razy rozmiar zmiennej, da to adres zmiennej x2. Taka sama sytuacja ze zmiennymi y1 i y2 (linijki 13 i 14). I jeszcze jedno pytanie, jaki specyfikator do wypisywania adresu? %p, czy %u tak jak w przykładzie powyżej?