Zeigerdifferenzen in C
»p-q« ist die Differenz der Positionen zweier Komponenten.
Diese Differenz darf nur gebildet werden, wenn die Adressen Adressen von Unterobjekten desselben Objekts sind.
Die Differenz zweier Adressen hat den Typ »ptrdiff_t«, mit dem Konversionsspezifizierer »%td«.
Die Zeile »#define __USE_MINGW_ANSI_STDIO 1« ist bei einigen Entwicklungssystemen notwendig, um den Konversionsspezifizierer »%td« verwenden zu können.
main.c
#define __USE_MINGW_ANSI_STDIO 1 #include <stdio.h>
#include <stddef.h> /* ptrdiff_t */ int main( void )
{ int const a[] ={ 65, 66, 67, 68, 0 };
int const * p = a;
printf( "%d\n", *p++ );
printf( "%d\n", *p++ );
printf( "%d\n", *p++ );
printf( "%d\n", *p++ );
printf( "%td\n", p - a );
ptrdiff_t const d = p - a;
printf( "%td\n", d ); }stdout
65
66
67
68
4
4