#include<stdio.h>
int main(void){
int *ptr,a,b;
a = ptr;
b = ptr + 1;
printf("the vale of a,b is %x and %x respectively",a,b);
int c,d;
c = 0xff;
d = c + 1;
printf("the value of c d are %x and %x respectively",c,d);
return 0;
}
obecnie wprowadzone wartość jestDlaczego wskaźnik + 1 dodatku 4 faktycznie
the vale of a,b is 57550c90 and 57550c94 respectively
the value of c d are ff and 100 respectively%
okazuje się, że ptr + 1 rzeczywiście, dlaczego zachowują się w ten sposób?
Bo tak działa arytmetyka wskaźnikowa w C. Tak właśnie jest zdefiniowana. Po dodaniu 1 do wskaźnika 'int *' przeskakuje do następnego obiektu 'int'. Najwyraźniej na twojej platformie 'int' składa się z 4 bajtów. Jest to podstawowa wiedza na temat wskaźników C - o czym czytasz w książce. – AnT
Zobacz [moja poprzednia odpowiedź] (http://stackoverflow.com/a/8772201/119527) na takie pytanie. –
Powinieneś używać '% p' w łańcuchach formatu' printf' dla wskaźników. Nie używaj do tego '% x', nie jest przenośny (ponieważ wskaźniki i' int'-s mogą mieć inną szerokość bitową). –