void *p;
p++;
...
問:如果p的值爲0x7f6c5b30,執行完p++,p的值爲多少?
如果是char *p,答案是0x7f6c5b31;
如果是int *p,答案可能是0x7f6c5b32(如16bit DSP),可能是0x7f6c5b34(如32bit winxp),可能是0x7f6c5b38(如64bit Linux SUSE);
如果是void *p呢?
但,
GNU規定,void指針的運算操作與char型保持一致;
因此,爲了程序的可移植性,我們需要在處理void指針運算時一律轉換爲char型處理,例如:
void *p;
((char *)p)++; //通過這種手段控制p的偏移