Може би искаш да направиш:
c = *p - *q;
Това ще ти даде очаквания резултат, изваждайки
стойностите на клетките.
short* p1 = 5;
p1++; //това се смята за една позиция напред, демек 2 байта
(приемайки, че short е 2 байта)
printf p1 //ще ти изведе 7, а не 6
int* p2 = 10;
p2++;
printf p2 //ще ти изведе 14, а не 11
В твоя случай адресите понеже са един до друг (през 4 байта
разстояние), означава, че са през 1 позиция разстояние, демек
разликата им е 1.
Ако искаш реалната разлика да получиш, мисля, че може да се направи
така:
int *p = &a,*q = &b;
c = (int)p - (int)q;
printf c //БАМ, четворка
Междувпрочем си фантазирам, може и да съм написал грешни неща :Д:Д:Д Е
ся ще проверя теорията ми
On Jan 15, 8:56 pm, daniel georgiev <daniel.georgie...@gmail.com>
wrote:
> не точно това искам да направя...
> обяснението е:
> Difference of two same type of pointer is always one.
> но като погледна адресите разликата им е 4 не 1
>
> 2012/1/15 Bojidar Dimitrov <bozhidar.dimit...@gmail.com>