2008年10月12日 星期日

基礎指標 II

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 : 小惡魔 – 電腦技術

沒有留言:

張貼留言