int main(void) { int *a,*b; a=1; b=1; printf("%d\n",a+b); return 0; }
上面這個題目,哪裡有出問題?
要改成下面這樣才行:
int main(void) { int *a,*b; a = (int *)1; b = (int *)1; printf("%d\n",(int)a+(int)b); return 0; }Ans: 2
----- Dev-C++ 可以寫成這樣 (沒事不要看Dev-C的觀念…會混亂的,好可怕)-----
int main(void) { int *a,*b; a = (int *)1; b = (int *)1; printf("%d\n",a+(int)b); return 0; }Ans: 5
(int) b 就相當於 sizeof(*b) 也等於 sizeof(int *) 答案都是4,所以就是 1+4 =5
指標是不能相加的,只能透過 offset 方式來讓指標指向不同 base,
指標相減,那就是 offset 的意思喔
ref : 小惡魔 – 電腦技術
沒有留言:
張貼留言