1#include <assert.h>2#include <stddef.h>3#include <stdio.h>45/*6output:7NULL = 08end:9*/1011typedef struct test Test;1213struct test {14 int a, b, c;15 char d;16} test = {17 .a = 1,18 .b = 2,19 .c = 3,20 .d = 4,21};2223int24main()25{26 wchar_t wc = L'c';27 char *q, *p = (char *) &test;2829 printf("NULL = %p\n", NULL);3031 p += offsetof(Test, d);3233 assert(sizeof(size_t) == sizeof(ptrdiff_t));34 assert(wc == L'c');35 assert(*p == 4);36 assert(offsetof(Test, d) > offsetof(Test, a));37 assert(offsetof(Test, d) > offsetof(Test, b));38 assert(offsetof(Test, d) > offsetof(Test, c));39 assert(sizeof(sizeof(int)) == sizeof(size_t));40 assert(sizeof(p - q) == sizeof(ptrdiff_t));4142 return 0;43}