我有這樣的代碼在C:打印指針
int tab[10] = {3, 10, 5, 7, 9, 4, 9, 4, 6, 8, 0};
printf("(int*)&tab[0]=%p (int*)&tab[1]=%p (int*)&tab[1]-(int*)&tab[0]=%d\n", (int*)&tab[0], (int*)&tab[1], ((int*)&tab[1]) - ((int*)&tab[0]));
,並返回:
(int*)&tab[0]=0xbf9775c0 (int*)&tab[1]=0xbf9775c4 (int*)&tab[1]-(int*)&tab[0]=1
我不明白的是,爲什麼差別最後返回的是1而不是4。任何人都可以告訴我一種方式來打印他們(地址和他們的差異)以一致的方式(int *)?
或者只是在減去之前將它們轉換爲int。 – Lundin 2011-05-11 16:20:23
@Lundin:假設'sizeof(size_t)
2011-05-11 16:21:02
@Oli - 我認爲你的意思是'intptr_t',而不是'size_t',在你的評論中。 – 2011-05-11 16:27:41