C 中 ptrdiff_t簡單思考舉例
阿新 • • 發佈:2019-01-10
#include<stdio.h> #include<stddef.h> struct stuff { char name[16]; }; typedef struct stuff STF; STF array[] = { {"12"}, {"122"}, {"123"}, {"12s"}, {"12x"}, {"132"}, {"1c2"}, {"1a2"}, {"12z"}, }; int main() { STF *p0 = &array[0]; STF *p8 = &array[8]; ptrdiff_t diff = p8 - p0; ptrdiff_t addr_diff=(char*)p8-(char*)p0; printf("%p\n", (void*)p0); printf("%p\n", (void*)p8); printf("%ld\n", (long)diff); printf("%ld\n", (long)addr_diff); printf("%p\n", (void*)(p8-8)); return 0; }
參考: https://blog.csdn.net/gdmmhym/article/details/6451554
http://www.runoob.com/cprogramming/c-standard-library-stddef-h.html